今天我们来总结一下Python里面差不多最常用的一种数据类型:list.
主要参考:https://docs.python.org/zh-cn/3/library/stdtypes.html#typesseq-common
DE8UG的代码环境为:
- Windows10
- python3.7
概念
列表是可变序列,通常用于存放同类项目的集合。
list的类定义为:
class list([iterable])
可以用多种方式构建列表:
- 使用一对方括号来表示空列表: []
- 使用方括号,其中的项以逗号分隔: [a], [a, b, c]
- 使用列表推导式: [x for x in iterable]
- 使用类型的构造器: list() 或 list(iterable)
构造器将构造一个列表,其中的项与 iterable 中的项具有相同的的值与顺序。 iterable 可以是序列、支持迭代的容器或其它可迭代对象(DE8UG注解:iterable就是一个关键词,代表了Python里面的可迭代对象这个概念)。 如果 iterable 已经是一个列表,将创建并返回其副本,类似于 iterable[:]。 例如,list('abc') 返回 ['a', 'b', 'c'] 而 list( (1, 2, 3) ) 返回 [1, 2, 3]。 如果没有给出参数,构造器将创建一个空列表 []。
其它许多操作也会产生列表,包括 sorted() 内置函数。
列表实现了所有 一般
和 可变
序列的操作。 列表还额外提供了以sort方法,sort方法我们放到以后和排序一起讲解。
下面先看一下一般
和 可变
序列的操作都有哪些。
函数/操作
先看一般的操作,也就是序列的通用操作:
在表格中,s 和 t 是具有相同类型的序列,n, i, j 和 k 是整数而 x 是任何满足 s 所规定的类型和值限制的任意对象。
in 和 not in 操作具有与比较操作相同的优先级。 + (拼接) 和 * (重复) 操作具有与对应数值运算相同的优先级。
(图表如果显示不出,请微信搜索:Python随身听,查看历史文章)
表1:
再来看可变
序列的操作。
下面表格中的 s 是可变序列类型的实例,t 是任意可迭代对象,而 x 是符合对 s 所规定类型与值限制的任何对象 。
表2:
代码演示
一般:
In [1]: s=[1,2,3]
In [2]: t=[4,5,6]
In [3]: 1 in s
Out[3]: True
In [4]: 4 not in s
Out[4]: True
In [5]: s+t
Out[5]: [1, 2, 3, 4, 5, 6]
In [6]: s*2
Out[6]: [1, 2, 3, 1, 2, 3]
In [7]: s[2]
Out[7]: 3
In [8]: s[1:2]
Out[8]: [2]
In [9]: len(s)
Out[9]: 3
In [10]: max(s)
Out[10]: 3
In [11]: min(s)
Out[11]: 1
In [12]: s.index(2)
Out[12]: 1
In [13]: s.count(2)
Out[13]: 1
可变序列:
In [14]: s=['a','b','c','d']
In [15]: t=['tom','de8ug','jack','marry']
In [16]: s[1]='tom'
In [17]: s
Out[17]: ['a', 'tom', 'c', 'd']
In [18]: s[2:3]=t
In [19]: s
Out[19]: ['a', 'tom', 'tom', 'de8ug', 'jack', 'marry', 'd']
In [20]: del s[2:3]
In [21]: s
Out[21]: ['a', 'tom', 'de8ug', 'jack', 'marry', 'd']
In [22]: s.append('lilei')
In [23]: s
Out[23]: ['a', 'tom', 'de8ug', 'jack', 'marry', 'd', 'lilei']
In [24]: s.extend(t)
In [25]: s
Out[25]:
['a',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom',
'de8ug',
'jack',
'marry']
In [26]: s*2
Out[26]:
['a',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom'...]
In [27]: s.insert(1,'hmm')
In [28]: s
Out[28]:
['a',
'hmm',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom',
'de8ug',
'jack',
'marry']
In [29]: s.pop(0)
Out[29]: 'a'
In [30]: s
Out[30]:
['hmm',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom',
'de8ug',
'jack',
'marry']
In [31]: s.remove('de8ug')
In [32]: s
Out[32]: ['hmm', 'tom', 'jack', 'marry', 'd', 'lilei', 'tom', 'de8ug', 'jack', 'marry']
In [33]: s.reverse()
In [34]: s
Out[34]: ['marry', 'jack', 'de8ug', 'tom', 'lilei', 'd', 'marry', 'jack', 'tom', 'hmm']
ok,希望上面的代码你都自己练习一遍,这样在以后用到某个方法时候才能知道怎么回事儿。
有任何问题欢迎留言,wx搜索“Python随身听”,【在看】一下,下期见。
网友评论