? 这是我参与更文挑战的第14天,活动详情查看: 更文挑战
0x00 ? 前言
Python是一种知道如何不妨碍你编写程序的编程语言。它易于学习,功能强大,足以构建Web应用程序并自动化无聊的东西。
本文是对序列类型中列表(list)进行介绍。
0x01 列表(list)
列表(list)是序列的内置类型,是最常用的Python数据类型之一。
列表vs元组
列表和元组的主要不同在于,列表是可以修改的,而元组不可以。这意味着列表适用于需要中途添加元素的情形,而元组适用于出于某种考虑需要禁止修改序列的情形。几乎在所有情况下都可使用列表来代替元组。元组用作字典键时不能使用列表来代替元组,因为字典键是不允许修改的。
创建列表
列表语法很简单,只要把逗号分隔的不同的数据项使用方括号[ ]
括起来即可。
>>> [1,2,3]
[1,2,3]
>>> [1]
[1]
# 空列表
>>> []
[]
复制代码
使用list()创建
内置的函数 list() 将任何序列转换成列表。 list实际上也不是函数,而是类型。
>>> list('Hello')
['H', 'e', 'l', 'l', 'o']
复制代码
type()类型判断
过 type() 函数来查看数据类型。
>>> type([1,2,3])
<class 'list'>
复制代码
访问列表
使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问元组中的一组元素(得到的是一个新的子列表)。 索引可以为负值。当使用切片访问可以传入三个参数,第1个参数 表示起始索引,第2个参数 表示结束索引,第3个参数 表示步长。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[2]
3
>>> numbers[-3]
8
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[0:1]
[1]
>>> numbers[-3:-1]
[8, 9]
>>> numbers[-3:]
[8, 9, 10]
>>>> numbers[:3]
[1, 2, 3]
# 整个列表
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 步进
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[::4]
[1, 5, 9]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
复制代码
成员资格检查
要检查特定的值是否包含在列表中,可使用运算符in。
>>> a = [1,2,3]
>>> 1 in a
True
>>> 4 not in a
True
复制代码
迭代(iteration)
使用 for 循环可以遍历任何可迭代对象(列表)。
>>> for i in [1,2,3]:
... print(i)
...
1
2
3
复制代码
修改列表
使用索引特定位置的元素然后进行赋值。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[1] = 22
>>> numbers
[1, 22, 3, 4, 5, 6, 7, 8, 9, 10]
复制代码
使用加法运算符来拼接元组,添加新元素。
>>> a = [1, 2, 3]
>>> a = a + [4, 5, 6]
>>> a
[1, 2, 3, 4, 5, 6]
复制代码
将列表与数n
相乘时,将重复这个列表n
次来创建一个新列表。
>>> a = [42]
>>> a = a * 10
>>> a
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
# None
>>> [None] * 10
[None, None, None, None, None, None, None, None, None, None]
# 空列表
>>> [] * 10
[]
复制代码
删除列表
使用 del 语句来删除列表元素 或 列表。 垃圾回收会自动销毁不用的列表,所以一般不需要通过 del 来手动删除。
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
复制代码
0x02 列表推导式(List Comprehensions )
列表解析(list comprehension)提供了一种优雅的生成列表的方法,能用一行代码代替十几行代码,而且不损失任何可读性。列表解析是Python迭代机制的一种应用。是一个将一个列表(实际上是任意可迭代对象)转换成另一个列表的工具。在转换时,每个元素都可以按照某个条件被包含在新的列表中,并根据需要做出一些变换。
语法如下,返回一个新的列表,原始列表内容不改变。
newlist = [expression for item in iterable if condition == True]
复制代码
查找包含字母a
的水果。
>>> fruits = ["apple", "banana", "cherry", "mango"]
>>> newlist = []
>>> for x in fruits:
... if "a" in x:
... newlist.append(x)
...
>>> print(newlist)
['apple', 'banana', 'mango']
复制代码
使用列表推导式只要一行代码即可完成迭代判断操作。
>>> newlist = [x for x in fruits if "a" in x]
>>> print(newlist)
['apple', 'banana', 'mango']
复制代码