python列表(list)简介

? 这是我参与更文挑战的第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']
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享