列表操作汇总
创建 | 添加 | 修改 | 删除 | |
---|---|---|---|---|
a=[] | append() | list[]= | del() | |
list() | + | remove() | ||
range() | insert() | pop() | ||
推导式 | ||||
列表中元素的排序(正序、倒序)
列表中元素的max min 元素的计数
二维列表与数据表格(多维数据表的打印)
索引与切片(正向、逆向、间隔跳)
形式
python中的列表使用[]括起,使用逗号隔开;
列表中可以为同一类型也可以为不同类型,也可以嵌套列表;
列表在内存中的表现为一个id存储对象,
>>> a =[1,2,3,'b',[1, 2, 3]]
>>> print(a)
[1, 2, 3, 'b', [1, 2, 3]]
>>> type(a)
<class 'list'>
列表创建
>>> list1= [0,1, 2] #定义列表式
>>> list(range(5)) #利用range进行创建
[0, 1, 2, 3, 4]
>>> list2 = [x*x for x in range(4)] # 利用推倒式创建
>>> list2
[0, 1, 4, 9]
列表内容更改(给改变大小、长度、清空)
修改
- 修改列表内的值可以通过索引更改所需要的值;
- 由于索引所得出的为列表内元素,使用其不能进行清空操作,而切片可以得到一个列表,所以可以使用切片进行相关的清空操作
>>> a[2]=5
>>> a
[1, 2, 5, 'b', [1, 2, 3]]
>>> a[2] = []
>>> a
[1, 2, [], 'b', [1, 2, 3]]
>>> a[2:3]=[]
>>> a
[1, 2, 'b', [1, 2, 3]]
增加
- 使用append()函数在列表的末尾增加元素(id不变)
```python
a =[1,2,3,’b’,[1, 2, 3]] a.append(5) a [1, 2, 3, ‘b’, [1, 2, 3], 5]
list1 = [1, 2, 3] list2 = [‘a’, ‘b’, ‘c’] id(list1) 1502000221056 list1.append(list2) list1 [1, 2, 3, [‘a’, ‘b’, ‘c’]] id(list1) 1502000221056 ```
拼接操作
使用 “+”合并列表(id变)
>>> list1=[1,2,3]
>>> list2 = ['a','b','c']
>>> list3 = list1+list2
>>> list3
[1, 2, 3, 'a', 'b', 'c']
>>> id(list1)
2337340075200
>>> id(list2)
2337336906368
>>> id(list3)
2337339948992
拼接操作仅允许在切片的条件下进行操作,在索引的条件下无法进行。 ```python a =[3, ‘b’, [1, 2, 3]]
a[0]+a[2] Traceback (most recent call last): File “
“, line 1, in a[0]+a[2] TypeError: unsupported operand type(s) for +: ‘int’ and ‘list’ a[:0]+a[2:] [[1, 2, 3]] a[:1]+a[2:] [3, [1, 2, 3]] ```
- 同一类型的可以在索引的情况下,进行操作
数字进行运算;字符串相加得字符串;列表会得到一个新的列表。
>>> a =[1,2,3,'b',[1, 2, 3]]
>>> a[0]+a[1]
3
>>> a[0]=[0,2,3]
>>> a
[[0, 2, 3], 2, 3, 'b', [1, 2, 3]]
>>> a[0]+a[4]
[0, 2, 3, 1, 2, 3]
>>> a[1]='c'
>>> a
[[0, 2, 3], 'c', 3, 'b', [1, 2, 3]]
>>> a[1]+a[3]
'cb'
使用”+”进行运算时,会重新生成新的列表.
使用insert(使用该函数时,id也未发生改变)
>>> list1 = [1, 2, 3]
>>> id(list1)
2833914080576
>>> list1.insert(0, 2)
>>> list1
[2, 1, 2, 3]
>>> id(list1)
2833914080576
删减
使用切片进行操作,可以定点清除甚至清空
>>> a =[1,2,3,'b',[1, 2, 3]]
>>> a[0:2]
[1, 2]
>>> a[0:2]=[]
>>> a
[3, 'b', [1, 2, 3]]
pop函数(使用该函数时可以带删除的内容, pop函数参数为序列数)
>>> list2 [0, 1, 4, 9] >>> list2.pop(0) 0 >>> list2 [1, 4, 9]
del函数
>>> list2 [1, 4, 9] >>> del(list2[0]) >>> list2 [4, 9]
remove函数(参数为从右往左第一个出现的内容)
>>> list3 = [1, 2, 1, 2, 3] >>> list3.remove(1) >>> list3 [2, 1, 2, 3] >>>
索引和切片
索引出来的类型与原列表中的类型一致
>>> a =[1,2,3,'b',[1, 2, 3]]
>>> a[4]
[1, 2, 3]
>>> b = a[4]
>>> b
[1, 2, 3]
>>> type(b)
<class 'list'>
>>> d = a[1]
>>> d
2
>>> type(d)
<class 'int'>
切片出来会出来新的列表
>>> c = a[0 :3]
>>> c
[1, 2, 3]
指定元素在指定区间的首出现时的索引值
index(value, [start, [end]])
>>> list = ['a', 'b', 'c', 'd']
>>> list.index('a') # 指定元素在列表中第一次出现的索引值
0
>>> list1 = ['a', 'b', 'c', 'd', 'a']
>>> list1.index('a') # 指定元素在列表中第一次出现的索引值
0
>>> list1.index('a', 1) # 'a'在指定区间[1:]中第一次出现的索引值
4
>>> list1.index('a', 1, 3) # 'a'在指定区间[1:3]中第一次出现的索引值
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
list1.index('a', 1, 3)
ValueError: 'a' is not in list
>>> list1.index('a', 1, 5) # 'a'在指定区间[1:5]中第一次出现的索引值
4
指定元素计数
count()无法进行指定区间的计数
>>> list1 = ['a', 'b', 'c', 'd', 'a']
>>> list1.count('a')
2
计数
>>> a =[1,2,3,'b',[1, 2, 3]]
>>> len(a)
5
排序
列表排序有三种方法,一种是调用列表函数:sort(),另一种是调用内置函数sorted(),还有一种迭代操作具体演示如下:
>>> list2 = [2, 5, 6, 1, 3, 7]
>>> list2.sort() # 正序
>>> list2
[1, 2, 3, 5, 6, 7]
>>> list2.sort(reverse=True) #倒序
>>> list2
[7, 6, 5, 3, 2, 1]
>>> sorted(list2) #内置函数,但内置函数不改变原有函数而是新建一个函数
[1, 2, 3, 5, 6, 7]
>>> list2
[7, 6, 5, 3, 2, 1]
>>> >>> reversed(list2) #迭代操作后使用list()
<list_reverseiterator object at 0x0000019EC2FB38E0>
>>> list(reversed(list2))
[1, 2, 3, 5, 6, 7]
>>>
列表中最大值 最小值以及求和操作
max() min() sum()均为内置函数
>>> list2 = [2, 5, 6, 1, 3, 7]
>>> list2.max()
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
list2.max()
AttributeError: 'list' object has no attribute 'max'
>>> max(list2)
7
>>> min(lis2)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
min(lis2)
NameError: name 'lis2' is not defined
>>> min(list2)
1
>>> sum(list2)
24