一:
列表: list
列表的定义:
1, 列表是由一系列元素组成, 元素与元素之间可能没有任何的关联关系, 但他们之间有先后顺序关系.
2, 列表是一种容器
3, 列表是一种序列
4, 列表是可以改变的序列
python3 中的序列有如下几种:
字符串 str
列表 List
元组 tuple
字节串 bytes
字节数组 bytearray
创建空列表的字面值:
L = [ ] #L 绑定空列表
创建非空列表的字面值:
- L = [1, 2, 3, 4, 5]
- L = ['beijing', 'shanghai', sshenzhen]
- L = [1, 'two', 3.3, '四']
- L = [1.2, [3,1, 3.2, 3.3], 4]
列表的构造函数
函数说明
- list()# 生成一个空的列表 等同于 []
- list(iterable)# 用可迭代对象创建一个列表
- >>> list('hello')
- ['h', 'e', 'l', 'l', 'o']
- >>> list(range(1,10,2))
- [1, 3, 5, 7, 9]
- >>>
- -----------------------------------------------------------------
列表的运算:
+ += * *=
列表对 + 和 * 的操作符与字符串相似.+ 号用于组合列表,* 号用于重复列表.
如下所示:
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print x, | 1 2 3 | 迭代 |
1,+ 用于拼接列表
- >>> x = [1,2,3]
- >>> y = [4,5,6,7]
- >>> x + y
- [1, 2, 3, 4, 5, 6, 7]
- >>>
2,+= 用原列表与右侧列表拼接, 并用变量绑定新列表.
- >>> x = [1,2,3]
- >>> x += [4,5,6]
- >>> x
- [1, 2, 3, 4, 5, 6]
- >>>
3, * 生成重复的列表
- >>> x = [1,2,3] * 3
- >>> x
- [1, 2, 3, 1, 2, 3, 1, 2, 3] #生成三个同样的重复列表
- >>> x = [1,2,3] * 2
- >>> x
- [1, 2, 3, 1, 2, 3] #生成两个同样的重复列表
- >>>
4,*= 生成重复的列表, 并给原变量赋值
- >>> x = [3,4]
- >>> x *= 2
- >>> x
- [3, 4, 3, 4]
- >>> x *= 4
- >>> x
- [3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4]
- >>> y = 3
- >>> y *= [7,8]
- >>> y
- [7, 8, 7, 8, 7, 8]
- >>>
列表的比较运算:
运算符:
- <<=>>===!=
- >>> [1,2,3] < [1,2,4] #安装顺序取列表中的每一个依次比较, 依次比较中, 那个数大, 那个列表就大, 后面的就不比较了
- True
- >>> [1,3] > [1,2,4]
- True
- >>> [1,2,3] < [1,3,4,5,6,7,8]
- True
- >>>
列表的 in / not in 运算符:
in 判断一个对象是否存在容器內, 如果存在返回 True. 否则返回 False
用法同字符串的 in 相同
语法:
数据对象 in 容器
- >>> L = [1,'Two', 3.3, '四']
- >>> 1 in L #判断'1'是否在列表中, 在返回 True
- True
- >>> 2 in L
- False
- >>> 3.3 in L #判断'3.3'是否在列表中, 在返回 True
- True
- >>> '4' not in L #判断 4 是否'不在'列表中, 在返回 True
- True
- >>> '四' in L #判断'四'是否在列表中, 在返回 True
- True
- >>>
列表的索引:
语法:
列表 [整数表达式]
用法:
取值时, 等同于字符串的索引操作.
索引分为正向索引和反向索引, 规则与字符串索引规则完全相同
- >>> L = [1,2,3,4,5,6]
- >>> L[0]
- 1
- >>> L[2]
- 3
- >>> L[2]
- 3
- >>> L[-1]
- 6
- >>> L[-2]
- 5
列表的索引赋值:
列表是可变的序列, 可以通过索引赋值改变列表中的元素
- >>> L = [1,2,3,4]
- >>> L
- [1, 2, 3, 4]
- >>> L[2] = 3.5 #将第三个元素改为 3.5
- >>> L
- [1, 2, 3.5, 4] #的到修改后的新列表
- >>>
列表的切片:
语法:
列表 [:]
列表 [::]
列表的切片取值时, 返回一个列表, 规则等同于字符串切片规则.
列表的切片赋值:
作用:
可以改变原列表的排序, 可以插入和修改数据
可以用切片改变列表的对应元素的值.
语法:
列表 [切片] = 可迭代对象.
注: 赋值运算符的右侧必须是一个可迭代对象
如:
- >>> L = [1,2,3,4]
- >>> L[0:1] = [1.1, 2.2] #在首位和第一位添加 1.1 和修改列表第一位'1'为 2.2 (列表是可修改的)
- >>> L
- [1.1, 2.2, 2, 3, 4]
- >>>
- >>> L = [1,2,3,4]
- >>> L[1:] = [3.3,4.4,5.5] #修改第一位后面所有的字符.
- >>> L
- [1, 3.3, 4.4, 5.5]
- >>> L = [1,2,3,4]
- >>> L[:] #这个结果为打印整个列表
- [1, 2, 3, 4]
- >>> L = [1,2,3,4]
- >>> L[:] = [0,1] # 所以 L[:] = [0,1] 时, 替换原有的列表, 生成新的列表.
- >>> L
- [0, 1]
- >>> L = [1,2]
- >>> L[1:1] = [3.1,3.4] #实现中间插入 [3.1, 3.2]
- >>> L
- [1, 3.1, 3.4, 2]
- >>>
- >>> L = [1,2,3,4]
- >>> L[0:0] = [0,1] #实现在前面插入 [0,1]
- >>> L
- [0, 1, 1, 2, 3, 4]
- >>>
- >>> L = [1,2,3,4]
- >>> L[3:3] = [5,6] #实现在后面插入 [5, 6]
- >>> L
- [1, 2, 3, 5, 6, 4]
- >>>
- >>> L = [1,5]
- >>> L[1:1] = range(2,5) #用 range 函数生成的可迭代对象赋值
- >>> L
- [1, 2, 3, 4, 5]
- >>>
- >>> L = [1,2,3,4,5]
- >>> L[1:2] = "ABCDE" # "ABCD" 也是可迭代对象
- >>> L
- [1, 'A', 'B', 'C', 'D', 'E', 3, 4, 5]
- >>>
切片赋值的注意事项:
对于步长不等于 1 的切片赋值, 赋值运算符右侧的可迭代对象提供的元素个数一定要等于切片切除的段数.
- >>> L = [1,2,3,4,5,6]
- >>> L[::2] = "ABC"
- >>> L
- ['A', 2, 'B', 4, 'C', 6]
- >>> L = [1,2,3,4,5,6]
- >>> L[::2] = "ABCDE" #切出三段, 但给出 5 个元素填充是错的 (报错)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- ValueError: attempt to assign sequence of size 5 to extended slice of size 3
- >>>
del 语句: 用于删除列表中的元素
语法:
del 序列 [整数表达式]
del 序列 [切片]
- >>> L = [1,2,3,4,5,6]
- >>> del L[-1] #表示删除最后一个
- >>> L
- [1, 2, 3, 4, 5]
- >>> del L[0] #删除第一个
- >>> L
- [2, 3, 4, 5]
python3 中常有于序列的函数
Python 包含以下函数:
len(seq) 返回容器的元素个数
- >>> L = [1,2,3,4,5,6]
- >>> len(L)
- 6
max(x) 返回序列的最大值元素
- >>> L = [1,2,3,4,5,6]
- >>> max(L)
- 6
min(x) 返回序列的最小值元素
- >>>L = [1,2,3,4,5,6]
- >>> min(L)
- 1
sum(x) 返回序列中所有元素的和 (元素必须是数值类型)
- >>> L = [1,2,3,4,5,6]
- >>> sum(L)
- 21
any(x) 真值测试, 如果容器內其中一个值为 True 则返回 True, 否则返回 False
all(x) 真值测试, 容器內所有元素的布尔值为 True 才返回 True
Python 包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj)
http://www.runoob.com/python/att-list-append.html 在列表末尾添加新的对象 >>> L = [] # 定义空列表 >>> for i in range(10): # 生成’0-9‘的数字 ... L.append(i) # 追加到 L 空列表中 ... >>> print(L) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 得到新的列表 >>> |
2 | list.count(obj)
http://www.runoob.com/python/att-list-count.html 统计某个元素在列表中出现的次数 >>> L = [1,2,3,1,3,5,6,3,8] >>> L.count(1) # 统计‘1’在列表中出现过几次 2 >>> L.count(3) # 统计‘3’在列表中出现过几次 3 >>> L.count(8) # 统计‘8’在列表中出现过几次 1 >>> |
3 | list.extend(seq)
http://www.runoob.com/python/att-list-extend.html 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) >>> L = [1,2,3] # 列表 1 >>> L2 = [4,5,6] # 列表 2 >>> L.extend(L2) # 把列表 2 中的所有值一次性追加到列表 1 中 >>> L [1, 2, 3, 4, 5, 6] # 生成新列表 >>> |
4 | list.index(obj)
http://www.runoob.com/python/att-list-index.html 从列表中找出某个值第一个匹配项的索引位置 >>> L = [1,2,3,4,5,6] # >>> L.index(1) # 返回列表中‘1’所对应的索引位置 0 >>> L.index(2) # 返回列表中‘2’所对应的索引位置 1 >>> L.index(3) # 返回列表中‘3’所对应的索引位置 2 >>> L.index(6) # 返回列表中‘6’所对应的索引位置 5 |
5 | list.insert(index, obj)
http://www.runoob.com/python/att-list-insert.html 将对象插入列表 >>> L = [1,2,3,4] >>> L.insert(2,8) # 在列表中的第二个索引处插入‘8’ >>> L [1, 2, 8, 3, 4] >>> L.insert(0,10) # 在列表中的‘0’索引处插入‘8’ >>> L [10, 1, 2, 8, 3, 4] >>> |
6 | list.pop(obj=list[-1])
http://www.runoob.com/python/att-list-pop.html 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 >>> L = [1,2,3,4,5,6] # 原列表 >>> L.pop() #pop 方法不加索引,默认删除最后一个元素,并返回删除元素的值 6 >>> L [1, 2, 3, 4, 5] # 删除后的列表 >>> L.pop(2) # 加所有‘2’后,删除索引第二处的元素,并打印出来 3 >>> L [1, 2, 4, 5] # 删除后的新列表 >>> |
7 | list.remove(obj)
http://www.runoob.com/python/att-list-remove.html 移除列表中某个值的第一个匹配项 >>> L = [1,2,3,1,5,6,2,8,6,9] # 原列表 >>> L.remove(1) # 删除列表中从左至右第一个‘1’元素,有多个同样的元素也只会删除一次 >>> L [2, 3, 1, 5, 6, 2, 8, 6, 9] >>> L.remove(9) # 删除列表中从左至右第一个‘9’元素,有多个同样的元素也只会删除一次 >>> L [2, 3, 1, 5, 6, 2, 8, 6] # 删除列表中从左至右第一个‘1’元素,有多个同样的元素也只会删除一次 >>> L.remove(1) >>> L [2, 3, 5, 6, 2, 8, 6] >>> |
8 | list.reverse()
http://www.runoob.com/python/att-list-reverse.html 反向列表中元素,列表的反转,用来改变原列表的先后顺序 >>> L = [1,2,3,4,5,6] >>> L.reverse() # 默认将列表反转,用来改变原列表的先后顺序 >>> L [6, 5, 4, 3, 2, 1] >>> |
9 | list.sort([func])
http://www.runoob.com/python/att-list-sort.html 对原列表进行排序,将列表中的元素进行排序,默认顺序按值的大到小的顺序排列 >>> L = [12,24, 30, 100, 5, 6, 88] # 原列表 >>> L.sort() # 默认 sort 方法 >>> L [5, 6, 12, 24, 30, 88, 100] # 的到从小到大排序的新列表 >>> L.sort(reverse=False) # 也可以加'reverse=False' 也是从小到大排序的新列表 >>> L [5, 6, 12, 24, 30, 88, 100] >>> L.sort(reverse=True) # ‘reverse=True’改用 reverse=True 的话是从大到小排序。 >>> L [100, 88, 30, 24, 12, 6, 5] >>> |
来源: http://www.bubuko.com/infodetail-2573009.html