创建列表
列表中元素以逗号隔开并且以中括号([])将他们括起来
1.空列表
empty = []
2.纯字符串(数字)组成的列表
member = ['A','B','C']
3.混合列表
mix = ['A‘,120,[1,2]]
向列表中插入新元素
1.append()函数
语法:列表.append(新元素)
append()函数需要一个参数,该参数将作为一个元素加入到列表的末尾,此函数无返回值
注意:append()不能同时添加多个元素,否则报错
Hello = ['Nice','to','meet']
Hello.append('U')
print(Hello) # 结果为:['Nice', 'to', 'meet', 'U']
2.extend()函数
语法:列表.extend(要加入的列表)
需要一个参数,但是这个参数是一个列表,通过这个函数可以将此列表内的元素加到目标列表末尾,此函数无返回值
Hello = ['Nice','to','meet']
newlist = ['U','too']
Hello.extend(newlist)
print(Hello)
# 结果为:['Nice', 'to', 'meet', 'U', 'too']
3.insert()函数
调用形式为:列表.insert(位置,元素)
insert()函数允许用户将加入的元素放置到任何位置,因此它需要两个参数,第一个是新元素在列表中的位置,第二个为该元素,
member = ['芳芳','琪琪','莎莎']
member.insert(0,'Sweet')
# 结果为: ['Sweet', '芳芳', '琪琪', '莎莎']
通过索引值获得列表中元素
Hello = ['Nice','to','meet']
print(Hello[0]) # 获取第一个元素
其中,0 是索引值,索引值从0开始计数
从列表中删除元素的方法
1.remove()函数
参数为一个元素,移除列表中某个值的第一个匹配项
注:该方法没有返回值,如果输入的元素不在列表中,则程序报错
Hello = ['Nice','to','meet']
Hello.remove('to') # 结果为:['Nice','meet']
print(Hello)
若再次执行Hello.remove(‘to’),由于该元素已经不存在此列表中,执行此操作将会报错
2.del 语句
- 通过索引值删除元素
- del 直接添加列表名,则删除整个列表
Hello = ['Nice','to','meet']
del Hello[2]
print(Hello) #结果为:['Nice','to']
del Hello # 删除整个列表
3.pop()方法
语法:list.pop(参数)
无参数,默认移除列表中的最后一个元素,并且返回该元素的值。
有参数,参数为索引值,删除对应的元素,并返回所删除的值
member = ['芳芳','琪琪','莎莎']
print(member.pop()) # 输出:'莎莎'
print(member) # 输出:['芳芳','琪琪']
print(member.pop(0)) # 输出:'芳芳'
列表分片(slice)
用于从列表取出多个元素
格式:列表名[开始索引:结束索引:步长]
备注:
1.切片方法是包前不包后的(也就是结束索引位置的元素不包含在内)
2.左右索引值及步长均可以省略,开始索引值省略,默认从0开始;结束索引值省略,默认包含左索引值右边的所有元素;步长省略,默认为1。
Hello = ['Nice','to','meet','U','too']
split1 = Hello[1:3] # split1为: ['to','meet']
split2 = Hello[:4] # split2为: ['Nice','to','meet','U']
split3 = Hello[2:] # split3: ['meet','U','too']
split4 = Hello[:], # split4:['Nice','to','meet','U','too'],表示原列表的拷贝
另外,需要注意的是:python支持负数索引,-1相当于列表中右侧第一个元素值,以此类推。
步长也允许为负值时,表示从后面的元素向前数
Hello = ['Nice','to','meet','U','too']
split5 = Hello[4:2:-1] # split5: ['too', 'U']
split6 = Hello[-4:-1:1] # split6: ['to', 'meet', 'U']
列表拷贝
1.直接赋值
直接赋值后,相当于给列表一个新的标签,对其中一个作增、删、改操作时,都会发生改变
>>> list1 = [1,2,3,4]
>>> list2 = list1 # 直接将list1的值赋值给list2
>>> list1
[1, 2, 3, 4]
>>> list2
[1, 2, 3, 4]
>>> list2.pop() # 对list2进行删除操作
4
>>> list1
[1, 2, 3]
>>> list2
[1, 2, 3]
2.分片操作
分片操作获得的列表拷贝,除了内部元素一样之外两个列表没有任何联系
>>> list1
[1, 2, 3]
>>> list2
[1, 2, 3]
>>> list1 = [1,2,3,4,5]
>>> list2 = list1[:] # 分片获得列表的拷贝
>>> list1
[1, 2, 3, 4, 5]
>>> list2
[1, 2, 3, 4, 5]
>>> list1.pop() # 删除列表1最后的元素
5
>>> list2 # 列表2未发生改变
[1, 2, 3, 4, 5]
3.copy() 函数
语法:列表.copy()
>>> list1 = [5,4,3,2,1]
>>> list2 = list1.copy() # 获取列表的拷贝,与切片一致
>>> list1
[5, 4, 3, 2, 1]
>>> list2
[5, 4, 3, 2, 1]
>>> list1.pop()
1
>>> list2
[5, 4, 3, 2, 1]
列表中一些常用的操作符
1.比较操作符
列表可比较大小,在Python中会直接取两个数组的第0个元素进行比较,如果相等则继续对列表下一个元素进行比较。
注意:元素的值必须符合比较运算符的适用范围,例如:数字或字符
>>> list1 = [222,333]
>>> list2 = [333,222]
>>> list1 > list2
False
2.逻辑操作符
>>> list1 = [222,444]
>>> list2 = [444,222]
>>> list3 = [222,444]
>>> (list1 < list2) and (list1 == list3)
True
3.拼接操作符(+)
拼接操作符连接两个列表中的元素,+号两边必须都是列表
list1 = [1,2]
list2 = [3]
list3 = list1 + list2
print(list3) # 结果为:[1, 2, 3]
4.重复操作符(*)
>>> list1 = [1,2,3]
>>> list1 * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
5.成员关系操作符
用in 和 not in 判断参数是否在列表中
>>> list1 = ['Mr','Shirley']
>>> 'Mr' in list1
True
>>> 'Sweet' in list1
False
>>> 'Sweet' not in list1
True
需要注意的是:in 和 not in只能访问属于列表同一层的元素;
如果需要访问里层的元素,可进行如下操作
>>> list1 = ['Mr',['Shirley','Sweet'],123]
>>> 'Shirley' in list1
False
>>> 'Shirley' in list1[1] # 访问里层的元素
True
因此,可以看出访问列表中列表的元素可用:list1[1][0]方法
列表的内置方法
1.查看列表的BIF,使用dir(list)
dir(list)
# 输出为:['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
2.clear() 函数
用于删除列表中的所有元素,形成一个空的列表
>>> list1 = [1,2,3,4]
>>> list1.clear()
>>> list1
[]
3.copy()函数
获得列表的拷贝,会在内存中重新申请一个空间并存放列表的值
4.count()函数
语法:str.count(sub, start= 0,end=len(string))
用于统计参数在列表中出现的次数,有三个参数,第一个参数为需要统计的元素,第二个参数是开始搜索的位置,第三个参数是结束搜索的位置
>>>list1 = [1,3,6,3,1,62,1,54,23,1]
>>> list1.count(1)
4
5.index()函数
语法:str.index(str, beg=0, end=len(string))
用于寻找所输入参数在列表中的第一个位置并返回该位置值,该方法有三个参数,第一个表示指定检索的元素,第二个表示开始索引,第三个表示结束索引
>>> list1 = [1,3,6,3,1,62,1,54,23,1]
>>> list1.index(3)
1
>>> list1.index(99) # 传入不存在的元素,报错
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
list1.index(99)
ValueError: 99 is not in list
6.reverse()函数
语法:list.reverse()
用于反向列表中元素,此方法无返回值,只会对列表进行翻转
>>> list1 = [1,2,3,4]
>>> list1.reverse()
>>> list1
[4, 3, 2, 1]
6.sort()函数
list.sort([func])
用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
未指定参数:
>>> list1 = [1,5,2,7,4,9]
>>> list1.sort() # 未指定参数
>>> list1
[1, 2, 4, 5, 7, 9]
reverse = False
>>> list1 = [1,5,2,7,4,9]
>>> list1.sort(reverse = False) # 正向排序
>>> list1
[1, 2, 4, 5, 7, 9]
reverse = True
>>> list1 = [1,5,2,7,4,9]
>>> list1.sort(reverse = True) # 反向排序
>>> list1
[9, 7, 5, 4, 2, 1]
列表推导式/列表解析简介
列表推导式(list comprehensions)也叫列表解析,用来动态创建列表.
>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]