? 这是我参与更文挑战的第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']
复制代码





















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
