列表是python最常用的数据结构之一,它用方括号[]表示,比如
a=[2,5,3.14]
方括号内的各个元素用逗号隔开,列表的长度是可变的,列表内的元素也是可变的,元素类型也不要求一致,比如上述列表a里既有整数,也有浮点数,列表还可以嵌套定义,比如
b=[3.14,[666,100],’Hello world’]
列表[666,100]嵌套在列表b里,列表还可以通过list()函数将字符串转换而来
list(‘中秋节快乐’)
得到的结果是
['中', '秋', '节', '快', '乐']
它将字符串里的每一个字符拆开作为列表的元素,列表里的每一个元素都是字符串。
列和字符串同属于序列类型,所以列表和字符串有很多相似的操作符和函数,总结如下:
序列类型通用操作符:
x in s
如果x是s的元素,返回True,否则返回False
x not in s
如果x不是s的元素,返回False,否则返回True
s + t
连接s和t
s*n 或 n*s
将s复制n次
s[i]
索引,返回s中的第i个元素
s[i: j] 或 s[i: j: k]
切片,返回序列s中第i到j以k为步长的元素子序列
序列类型通用函数和方法:
len(s)
返回序列 s 的长度
min(s)
返回序列 s 的最小元素,s 中元素需要可比较
max(s)
返回序列 s 的最大元素,s 中元素需要可比较
s.index(x)
返回序列 s 第一次出现元素x的位置
s.count(x)
返回序列 s 中出现x的总次数
代码举例如下:
a=[3.14,[666,100],'Hello world']
print(3.1415 in a) #返回False
print(3.1415 not in a) #返回True
print(a+[80]) #[3.14, [666, 100], 'Hello world', 80]
print(a*2) #[3.14, [666, 100], 'Hello world', 3.14, [666, 100], 'Hello world']
print(a[1]) #返回[666, 100]
print(a[1][0]) #返回666
print(len(a)) #返回3
print(a.index('Hello world')) #返回2
print(a.count(666)) #返回 0
在例子中,列表a总共有3个元素,分别是3.14,[666,100],’Hello world’,列表从左往右的序号从0开始,所以第6行代码返回第1个元素,即[666,100],这个元素是一个列表,第7行代码是返回第1个元素中的第0个元素,即求[666,100]中的第0个元素,结果是666。
第10行代码是返回元素666出现次数,注意666不是列表a的元素,它只是元素[666,100]的一部分,故返回0。
列表中有数值,有字符串,有列表,所以不能进行max()和min()运算。
列表支持很多添加、删除元素的函数,常见的有:
list.
append
(x)- 在列表末尾添加一个元素。
list.
insert
(i, x)- 在第i个位置插入元素x。
list.
remove
(x)- 从列表中删除第一个值为 x 的元素。未找到指定元素时,触发
ValueError
异常。 list.
pop
([i])- 删除列表中指定位置的元素,并返回被删除的元素。未指定位置时,
a.pop()
删除并返回列表的最后一个元素。(方法签名中 i 两边的方括号表示该参数是可选的,不是要求输入方括号。这种表示法常见于 Python 参考库)。 list.
clear
()- 删除列表里的所有元素。
list.
sort
([reverse=True])- 就地排序列表中的元素。
sorted
(list)- 返回排好序的副本,原列表不变。
list.
reverse
()- 反转列表中的元素。
详细用法请参考以下例子:
In [1]: a=[1,4,6.66,['今天天气不错',100],'How are you']
In [2]: a.append(99) #99添加到列表的末尾
In [3]: a
Out[3]: [1, 4, 6.66, ['今天天气不错', 100], 'How are you', 99]
In [4]: a.insert(2,'新元素') #在第2个位置插入,注意序号从0开始
In [5]: a
Out[5]: [1, 4, '新元素', 6.66, ['今天天气不错', 100], 'How are you', 99]
In [6]: a.remove('新元素') #删除元素
In [7]: a
Out[7]: [1, 4, 6.66, ['今天天气不错', 100], 'How are you', 99]
In [8]: a.pop() #删除最后一个元素
Out[8]: 99
In [9]: a.reverse() #列表元素反转
In [10]: a
Out[10]: ['How are you', ['今天天气不错', 100], 6.66, 4, 1]
In [11]: b=[4,6,0,9,7]
In [12]: b.sort() #升序排列,改变b的值
In [13]: b
Out[13]: [0, 4, 6, 7, 9]
In [14]: b.sort(reverse=True)
In [15]: b
Out[15]: [9, 7, 6, 4, 0]
In [16]: c=[4, 6, 0, 9, 7]
In [17]: sorted(c) #升序排列,不改变c的值
Out[17]: [0, 4, 6, 7, 9]
In [18]: c
Out[18]: [4, 6, 0, 9, 7]
代码的样式跟以往有点不太一样,这个代码是在anaconda 中的spyder右边的交互式窗口写的,查看变量的值时,只需写上变量名然后回车,无需print()函数,在一些验证式的程序中尤其方便。代码中In表示输入,Out表示输出的内容。
修改和删除列表元素还有以下几种形式:
list[i]=x
将列表第i个元素替换为x
list[i:j]=lt
用列表lt替换第i个元素到第j-1个元素
list[i:j:k]=lt
用列表lt替换列表第i个到第j-1个步长为k的元素
del list[i:j]
删除列表第i个到第j-1个元素
del list[i:j:k]
删除列表第i个到第j-1个步长为k的元素
举例如下:
In [1]: a=[2,3,4,5,6,7,8,9]
In [2]: a[3]=100
In [3]: a
Out[3]: [2, 3, 4, 100, 6, 7, 8, 9]
In [4]: a[4:7]=[66,88,99]
In [5]: a
Out[5]: [2, 3, 4, 100, 66, 88, 99, 9]
In [6]: a[::2]=[0,0,0,0]
In [7]: a
Out[7]: [0, 3, 0, 100, 0, 88, 0, 9]
In [8]: del a[0:2]
In [9]: a
Out[9]: [0, 100, 0, 88, 0, 9]
In [10]: del a[0:4:2]
In [11]: a
Out[11]: [100, 88, 0, 9]
因为列表的切片与字符串的切片是一样的,所以代码不做过多解释,大家对照运行结果认真理解,如果看不懂返回字符串切片复习。
———-END———-
转载请注明:XAMPP中文组官网 » python基础学习列表详细用法