3.4 List(列表)

3.4.1 定义Lsit(列表)

列表是一种有序的集合,基于链表实现,在python中应用很广泛。定义列表有两种方式

  1. 直接赋值:list_name = ['a', 'b', 'c', 2, [1, 2, 3]]
  2. list()定义:list_name = list(['a', 'b', 'c', 2, [1, 2, 3]])

3.4.2 列表的下标

和字符串一样,从0开始。

str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
print(str_list2[0]) #结果为:a
print(str_list2[4]) #结果为:[1, 2, 3]
print(str_list2[4][0]) #结果为:1

3.4.3 列表的长度

通过len(s_list),统计s_list的长度。

str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
print(len(str_list2 )) #结果为5

3.4.4 更新列表的值

通过指定下标,可以改变列表相应下标的值。

str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
str_list2[3] = 6 #将下标为3的元素改为6
print(str_list2)) #结果为:['a', 'b', 'c', 6, [1, 2, 3]]

3.4.5 列表的遍历

  • 通过for循环遍历
str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
for s in str_list2:
    print(s)
"""
结果为:
a
a
b
c
2
[1, 2, 3]
"""
  • 通过while循环遍历
str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
index = 0
while index < len(str_list2):
    print(str_list2[index])
    index +=1
#结果同上

3.4.6 列表的加法与乘法操作

列表的相加:两个列表融合在一起。

list_1 = [1, 2, 3]
list_2 = [4, 5, 6]
print(list_1 + list_2) #结果为[1, 2, 3, 4, 5, 6]

列表的乘法:乘几次,就等于重复几次列表元素。同理,其实字符串也可以这样做乘法(s = "abc"*2,结果为abcabc)。

list_1 = [1, 2, 3]
print(list_1 * 3) #结果为:[1, 2, 3, 1, 2, 3, 1, 2, 3]

3.4.7 列表的切片

和字符串的切片基本类似。list_str[开始:结尾:步长],取左不取右,在确定开始和结尾位置时,步长用来间隔取确定范围内的字符,步长默认为1。

list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 对应下标0 1 2 3 4 5 6 7 8 取左不取右
print(list_1[0:3]) #结果为[1, 2, 3]
#对应下标:-9 -8 -7 -6 -5 -4 -3 -2 -1 取左不取右
print(list_1[-3: -1])  #结果为:[7, 8]
#想要取到9则结尾不写
print(list_1[-3:])  #结果为:[7, 8, 9]
#取整个列表
print(list_1[:])
#加上步长,间隔几步取字符
print(list_1[0:7]) #结果为:[1, 2, 3, 4, 5, 6, 7]
print(list_1[0:7:2]) #结果为:[1, 3, 5, 7]
#负数
print(list_1[-6:]) #结果为:[4, 5, 6, 7, 8, 9]
print(list_1[-6::2]) #结果为:[4, 6, 8]
#反向输出
print(list_1[::-1])  #结果为:[9, 8, 7, 6, 5, 4, 3, 2, 1]

3.4.8 列表的操作方法

  • del关键字:删除所定义的列表,也可删除指定下标的列表元素。
  • append():用于向列表末尾添加元素。添加元素的代码格式:list_name.append()。
  • insert():insert()用于向列表中插入元素。插入元素的代码格式:list_name.insert(位置, 插入元素)。
  • clear():清空列表。清空列表的代码格式:list_name.clear()
  • remove():用于从列表中移除指定元素。若列表中有重复元素,remove函数只会移除匹配到的第一个。移除列表指定元素的代码格式:list_name.remove(指定元素)。
  • pop():用于移除列表中指定位置(下标)的元素,并返回要移除的元素。在默认情况下,移除列表中最后一个元素。移除列表中指定位置的代码格式:list_name.pop(指定下标)。
  • index():用于返回所匹配元素的索引(下标),返回值为匹配元素的下标。索引的代码格式:list_name.index(带查找对象, 查找的起始范围, 查找的结束范围)。若列表中有重复元素,index()只会返回匹配到的第一个元素下标。
  • reverse():用于将列表反转。反转格式为:list_name.reverse()。
  • extend():用于在列表末尾添加另一个列表,与append()相比,extend()可以一次性添加多个元素。使用extend()和列表的加法结果是一样的,但是extend()会将另一个列表并入当前列表,而列表加法是返回新的列表,extend()更节约内存空间,推荐使用extend()来实现大列表的连接操作。添加格式为:list_name.extend()。
  • copy():用于创建列表的副本。格式为:list_name.copy()。
  • sort():用于将列表升序排序,如果想降序排序,括号里面加上参数:list_name.sort(reverse = True)(按照ascii码对应大小进行排序,常见的Ascii码大小规则,0~9
  • count():用于统计指定元素在列表中出现的次数。返回值为指定元素出现的次数。格式为list_name.count(指定元素)。
# -------del
list_2 = [1, 2, 3]
del list_2
print(list_2) #结果系统会报错,NameError: name 'list_2' is not defined
del list_2[1] #结果为[1, 3],删除列表中指定下标的值
# -------append()
list_3 = [1, 2, 3]
list_3.append(4)
print(list_3) #结果为:[1, 2, 3, 4],不能直接打印list_3.append(4)
# -------insert()
list_3.insert(2,[1, 2, 3])
print(list_3) #结果为:[1, 2, [1, 2, 3], 3, 4]
# -------clear()
list_3.clear()
print(list_3) #结果为:[]
# -------remove()
list_4 = ["Hello", "Python", "Hello", "hey", "Hello"]
list_4.remove("Hello")
print(list_4) #结果为:['Python', 'Hello', 'hey', 'Hello']
# -------pop()
list_5 = ["Hello", "Python", "Hello", "hey", "Hello"]
list_5.pop(3) #指定下标
print(list_5) #结果为:['Hello', 'Python', 'Hello', 'Hello']
list_6 = ["Hello", "Python", "Hello", "hey", "Hello"]
print("要移除的数据:", list_6.pop(3)) #结果为:要移除的数据:hey
# -------index()
list_7 = ["Hello", "Python", "Hello", "hey", "Hello"]
idx = list_7.index('Hello')
print("下标为:", idx) #结果为:下标为: 0
idx1 = list_7.index('Hello', 1, 4)
print("下标为:", idx1) #结果为:下标为:2
# -------reverse()
list_7.reverse()
print(list_7) #结果为:['Hello', 'hey', 'Hello', 'Python', 'Hello'],类似list_7[::-1]
# -------extend()
list_8 = [1, 2, 3]
list_8.extend([4, 5, 6])
print(list_8) #结果为:[1, 2, 3, 4, 5, 6],使用list_8.append()的结果是[1, 2, 3, [4, 5, 6]]
list_9 = [4, 5, 6]
print(list_8 + list_9) #结果为:[1, 2, 3, 4, 5, 6],返回的是新列表
# -------copy()
list_10 = ["Hello", "Python", "Hello", "hey", "Hello"]
list_copy = list_10.copy()
del list_10[0] #删除list_10的第一个元素,是否会对list_copy副本造成影响
print(list_copy) #结果为:["Hello", "Python", "Hello", "hey", "Hello"],没有影响
"""
list_10 = ["Hello", "Python", "Hello", "hey", "Hello"]
list_copy = list_10 #直接等号赋值,list_10和list_copy指向的对象是同一个,而copy()后的两者指向的对象是不同的
del list_10[0]
print(list_copy) #结果为:['Python', 'Hello', 'hey', 'Hello'],有影响
"""
# -------sort()
list_11 = ['Hello', 'python', '1', '哈哈']
list_11.sort()
print(list_11) #['1', 'Hello', 'python', '哈哈']
a = [4, 3, 5, 2, 1]
a.sort(reverse = True)
print(a) #结果为:[5, 4, 3, 2, 1]
# -------count()
list_12 = ["Hello", "Python", "Hello", "hey", "Hello"]
print(list_12.count("Hello")) #结果为3

你可能感兴趣的:(Python学习笔记,python,开发语言)