Python学习笔记——列表
2017-11-15 23:52
561 查看
1 list()函数
list() 生成一个空的列表,等同于[]list(iterable) 用可迭代对象初始化一个列表
>>> a = list() >>> a [] >>> b = list('python') >>> b ['p', 'y', 't', 'h', 'o', 'n'] >>> c = list('1234') >>> c ['1', '2', '3', '4'] >>> d = list(5678) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable
注:因为
5678不是可迭代对象,随意不能初始化列表。
2 列表运算
2.1 +运算
>>> a=[1,2,3] >>> b=[4,5,6] >>> c=a+b >>> c [1, 2, 3, 4, 5, 6]
2.2 +=运算
>>> a=[1,2,3] >>> a+=[7,8,9] >>> a [1, 2, 3, 7, 8, 9]
2.3 *运算
>>> a = [1,2,3] >>> a*2 [1, 2, 3, 1, 2, 3]
2.4 *=运算
2.5 关系运算
>>> a = [1,2,3] >>> b = [4,5,6] >>> c = ['1','2','3'] >>> d = [1,2,3] >>> a == b False >>> a != b True >>> a == c False >>> a == d True
2.6 in运算
>>> 1 in [1,2,3] True >>> "1" in [1,2,3] False >>> "a" in ["a","b","c"] True >>> a in [a,b,c] Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined
2.7 and 运算符
>>> [] and ["a","b"] [] >>> ["a","b"] and [] [] >>> ["a","b"] and ["c","d"] ['c', 'd']
2.8 or 运算符
>>> [] or [1,2] [1, 2] >>> [1,2] or [] [1, 2] >>> [] or [] [] >>> [1,2] or [3,4] [1, 2]
2.9 not 运算符
>>> not[] True >>> not[1,2] False
3 索引与切片
3.1 列表索引
与字符串索引index一样,可以是负数3.2 列表切片slice
语法与字符串切片一样 [起始索引 : 结束索引 : 步长]列表切片赋值
b = a[:] #相当于将a列表赋值给b
切片赋值可以一次性修改列表的多个元素
>>> a = [1,2,3,4,5] >>> a[1:4] = [6,7,8,9] >>> a [1, 6, 7, 8, 9, 5]
切片赋值也可以增加或减少列表元素
>>> a = [1,2,3,4,5] >>> a[1:4] = [7,8] >>> a [1, 7, 8, 5] >>> a = [1,2,3,4] >>> a[2:] = [9,8,7,6,5] #将索引2之后的元素全部替换 >>> a [1, 2, 9, 8, 7, 6, 5] >>> a = [1,2,3,4] >>> a[1:3] = [] #将索引1、2处删除 >>> a [1, 4]
注意:按照这种方法进行 步长不为1的列表进行赋值、删除时 报错
>>> a[1:6:2] = [1] Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: attempt to assign sequence of size 1 to extended slice of size 3 >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[1:6:2] = [] Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: attempt to assign sequence of size 0 to extended slice of size 3
在索引位置
i处插入一段代码
a[i:i]
>>> a = [1,2,3,4] >>> a[0:0] = [7,8,9] #在索引0位插入列表 >>> a [7, 8, 9, 1, 2, 3, 4] >>> a = [1,2,3,4] >>> a[1:1] = [9,8,7] #在索引1位插入列表 >>> a [1, 9, 8, 7, 2, 3, 4]
4 列表长度计算函数len()
可以用来得到列表的长度>>> a = [1,2,3,4] >>> len(a) 4 >>> m = ['a','b','c','d'] >>> len(m) 4
5 列表最大值函数max()
用来得到列表中最大值的元素>>> a = [1,2,3,4] >>> max(a) 4 >>> b = ['1','2','3','4'] >>> max(b) '4' >>> c = ['1',2,'3',4] >>> max(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: int() > str()
6 列表最小值函数min()
可以得到列表中最小元素7 列表元素求和函数sum()
可以得到列表中所有元素和sum(列表[, 起始值])
列表值 总和 加 起始值;当起始值省略时则默认为0。
>>> a = [1,2,3,4] >>> sum(a) 10 >>> sum(a,100) 110 >>> b = ['1','2','3','4','5'] >>> sum(b) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
8 获得列表索引值函数index()
得到列表中某个元素的索引L.index(value [,begin[, end]])
value 要确定索引的元素(值)
返回值为第一个元素值的索引
>>> a = [1,2,3,4,5,5,5,] >>> a.index(5) 4
begin 开始索引的索引值
end 结束索引的索引值
>>> a = [1,2,3,4,5,5,5,] >>> a.index(5,5) 5 >>> a.index(5,1,4) #表示查询元素值为5的索引,从索引1开始(包含起始端点值),到索引4结束(不包含结束端点值) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 5 is not in list >>> a.index(5,6,10) #结束索引可以越界 6
9 获得列表元素个数函数count()
获得列表中元素个数L.count(object)object 元素值
示例
>>> a = [1, 2, 3, 4, 5, 5, 5] >>> a.count(5) 3
10 向列表中添加元素append()
向列表中添加元素L.append(object)object 要添加的元素,
将object添加到列表的末尾
返回None
>>> a = [1, 2, 3, 4, 5, 5, 5] >>> a.append('a') >>> a [1, 2, 3, 4, 5, 5, 5, 'a'] >>> a.append('b','c') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: append() takes exactly one argument (2 given) >>> a.append(['b','c']) #将[]列表当作一个元素添加到列表末尾 >>> a [1, 2, 3, 4, 5, 5, 5, 'a', ['b', 'c']]
11 向列表中添加另一列表extend()
向列表追加另一个列表L.extend(iterable)
iterable 要添加的可迭代对象(元素)
返回None
>>> a = [1,2,3,4,5] >>> a.extend("abc") >>> a [1, 2, 3, 4, 5, 'a', 'b', 'c'] >>> a = [1,2,3,4,5] >>> a.extend(["abc"]) >>> a [1, 2, 3, 4, 5, 'abc'] >>> a = [1,2,3,4] >>> a.extend(["a","b","c"]) >>> a [1, 2, 3, 4, 'a', 'b', 'c'] >>> a = [1,2,3,4] >>> a.extend(5) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable >>> a.extend([5]) >>> a [1, 2, 3, 4, 5]
12 向列表指定位置插入元素insert()
L.insert(index, object)
index 插入元素位置
object 插入的元素
返回None
插入元素位置可以越界,当越界时,则为列表的端点索引位置处插入值
>>> a = [1,2,3,4] >>> a.insert(2,"ab") >>> a [1, 2, 'ab', 3, 4] >>> a = [1,2,3,4] >>> a.insert(2,["ab","cd"]) >>> a [1, 2, ['ab', 'cd'], 3, 4] >>> a = [1,2,3,4] >>> a.insert(100,"ab") >>> a [1, 2, 3, 4, 'ab'] >>> a = [1,2,3,4] >>> a.insert(-100,"ab") >>> a ['ab', 1, 2, 3, 4]
13 列表的元素删除pop()
L.pop([index])
删除索引对应的元素,如果不加索引,默认删除最后一个元素
返回值:删除的元素
>>> a = [1,[2,3],4,[5,6],7,[8,9]] >>> b = a.pop() >>> b [8, 9] >>> a [1, [2, 3], 4, [5, 6], 7] >>> c = a.pop(-2) >>> c [5, 6] >>> a [1, [2, 3], 4, 7] >>> d = a.pop(100) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop index out of range
14 删除列表中首次出现的元素remove()
从列表中删除第一次出现在列表的值返回:None
>>> a = [1,2,3,1,2,3,'1','2','3','1','2','3'] >>> a.remove(1) >>> a [2, 3, 1, 2, 3, '1', '2', '3', '1', '2', '3'] >>> a.remove('1') >>> a [2, 3, 1, 2, 3, '2', '3', '1', '2', '3'] >>> a.remove(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list
15 删除列表元素 del语句
>>> a = [1,2,3,4,5,6] >>> del a[-1] >>> a [1, 2, 3, 4, 5] >>> del a[-2:-1] >>> a [1, 2, 3, 5] >>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined
16 浅复制copy()
L.copy()
仅复制一层,不会复制深层对象,
>>> m = [8,9] >>> a = [1,2,m] >>> b = a.copy() >>> a[0] = 3 >>> m[0] = 3 >>> a [3, 2, [3, 9]] >>> b [1, 2, [3, 9]] >>> a is b False >>> c = a >>> c is a True
17 深复制deep copy()
深复制需要使用copy模块>>> m = [[1,2],[3,4],5,6] >>> m [[1, 2], [3, 4], 5, 6] >>> n = copy.deepcopy(m) >>> n [[1, 2], [3, 4], 5, 6] >>> m[0][0] = 9 >>> m [[9, 2], [3, 4], 5, 6] >>> n [[1, 2], [3, 4], 5, 6] >>> n[0][1] = 8 >>> n [[1, 8], [3, 4], 5, 6] >>> m [[9, 2], [3, 4], 5, 6]
18 列表顺序反转reverse()
L.reverse()
列表元素顺序反转。
返回值:None
>>> a = [1,2,3,4,5] >>> a.reverse() >>> a [5, 4, 3, 2, 1]
19 列表元素排序sort()
将列表的顺序按值的大小进行排序L.sort(reverse=False)
reverse=False 顺序自小到大,默认不写
reverse=True 顺序自大到小。
>>> a = ['ab','ac','d','e','a','b','c','ac','cb'] >>> a.sort() >>> a ['a', 'ab', 'ac', 'ac', 'b', 'c', 'cb', 'd', 'e'] >>> a.sort(reverse=False) >>> a ['a', 'ab', 'ac', 'ac', 'b', 'c', 'cb', 'd', 'e'] >>> a.sort(reverse=True) >>> a ['e', 'd', 'cb', 'c', 'b', 'ac', 'ac', 'ab', 'a']
20 列表的清空clear()
L.clear
清空列表
>>> a = [1,2,3] >>> id(a) 140714286592520 >>> a.clear() >>> id(a) 140714286592520 #地址未发生改变 >>> a = [1,2,3] >>> id(a) 140714286592776 >>> a = [] >>> id(a) 140714286592520 #地址发生改变 >>> a = [1,2,3] >>> id(a) 140714286592776 >>> a[:] = [] >>> id(a) 140714286592776 #地址未发生改变
21 列表的遍历 while 和 for 循环
while循环a = [1,2,3,4,5,6] i = 0 sum_num = 0 while i<len(a): sum += a[i] i +=1 print(sum_num)
for循环
a = [1,2,3,4,5,6] sum_num = 0 for n in a: sum += n print(sum_num)
22 列表推导式语法
列表推导时用可迭代的对象依此生成列表内元素的方式[表达式 for 变量 in 可迭代对象 ]
或
[ 表达式 for 变量 in 可迭代对象 if 条件语句 ]
>>> y = [ x**2 for x in range(1,10)] >>> y [1, 4, 9, 16, 25, 36, 49, 64, 81] >>> z = [x**2 for x in range(1,10) if x%2 == 1] >>> z [1, 9, 25, 49, 81]
23 列表推导式嵌套
[ 表达式1 for 变量1 可迭代对象1 if条件语句1 for 变量2 in 可迭代对象2 if条件语句2]>>> z = [x*y for x in [1,2,3] for y in [4,5,6]] >>> z [4, 5, 6, 8, 10, 12, 12, 15, 18]
24 字符串拆分与拼接
24.1 字符串拆分
split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串str.split(str="", num=string.count(str))
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。
拼接后输出是列表形式
>>> str = "Line1-abcdef \nLine2-abc \nLine4-abcd" >>> print(str.split()) ['Line1-abcdef', 'Line2-abc', 'Line4-abcd'] >>> print(str.split(' ',1) ... ) ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
24.2 字符串拼接
S.join(iterable)
返回字符串
对列表操作
>>> a = '/' >>> b = a.join(["C:","Programe Files","Python3"]) >>> b 'C:/Programe Files/Python3'
对字符串操作
>>> a = "/" >>> b = a.join("abcde") >>> b 'a/b/c/d/e'
25 列表与字符串比较
列表和字符串都是序列,都是可迭代对象字符串中每个元素只能存储字符,而列表可以存储任意类型对象
26 帮助
Python3 列表类提供了一些方法,帮助我们更好、更方便的使用列表a = [] help(a)
相关文章推荐
- Python学习笔记一:列表和元组
- Python学习笔记——列表(list)的增,删,改,查
- Python源码学习笔记 4 列表对象
- Python学习笔记3_列表和元组
- Python3学习笔记(五)--列表生成式
- Python学习笔记5_列表推导式与序列解包
- 【Python2.7 学习笔记】Python 基础(三)迭代 + 列表生成式
- Python学习笔记(十六)----Python列表(Lists)
- 【Python 学习手册笔记】列表与字典
- Python学习笔记-数据结构之列表
- python 学习笔记-山寨携程(列表,字符串,字典和流程控制总结)
- Python学习笔记之列表
- Python学习笔记(六)Python的列表生成式、生成器
- Python学习笔记一之列表list
- Python学习笔记整理(五)Python中的列表.
- 学习笔记☞ python 基础(python3)【四】(函数 function,None,return,列表-2,random模块)
- python学习手册笔记--第8章--列表与字典
- Python学习笔记十二:列表(4)--len 、in、For的使用
- Python学习笔记(5)- 列表的遍历
- python学习笔记之一:列表