列表是一种有序的集合,基于链表实现,在python中应用很广泛。定义列表有两种方式
和字符串一样,从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
通过len(s_list),统计s_list的长度。
str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
print(len(str_list2 )) #结果为5
通过指定下标,可以改变列表相应下标的值。
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]]
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]
"""
str_list2 = list(['a', 'b', 'c', 2, [1, 2, 3]])
index = 0
while index < len(str_list2):
print(str_list2[index])
index +=1
#结果同上
列表的相加:两个列表融合在一起。
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]
和字符串的切片基本类似。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]
# -------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