介绍
List Python中的数据结构是可变的,或多变的,有序的元素序列。 list内的每个元素或值称为项目。 正如字符串被定义为引号之间的字符,list是由具有方括号之间的值来定义
[ ]
当你想使用许多相关的值时,list很好用。它们使您可以将属于同一个数据的数据保存在一起,缩小您的代码,并对多个值同时执行相同的方法和操作。 当考虑Pythonlist和其他数据结构是集合类型时,考虑您的计算机上所有不同的集合是很有用的:文件,歌曲播放list,浏览器书签,电子邮件,视频集合您可以在流媒体服务上访问,等等。 首先,让我们创建一个包含字符串数据类型项目的list:
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']
当我们打印出list时,输出看起来就像我们创建的list:
print(sea_creatures)
Output['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']
作为元素的有序序列,list中的每个项目可以通过索引单独调用。list是一种由较小部分组成的复合数据类型,并且非常灵活,因为它们可以添加,删除和更改值。当您需要存储大量值或迭代值,并且您希望能够轻松修改这些值时,您可能需要使用list数据类型。 在本教程中,我们将介绍一些我们可以使用Python中的list的方法。
索引 List
list中的每个项目相对应的索引数目,它是一个整数值,开始索引号
0
。 对于list
sea_creatures
,该指数详细情况如下:
'shark' |
'cuttlefish' |
'squid' |
'mantis shrimp' |
'anemone' |
0 |
1 |
2 |
3 |
4 |
中的第一项,字符串
'shark'
开始于索引
0
,而list索引结束
4
与该项目
'anemone'
。 因为Pythonlist中的每个项目都有相应的索引号,所以我们能够以与其他顺序数据类型相同的方式访问和操作list。 现在我们可以通过引用它的索引号来调用list的离散项:
print(sea_creatures[1])
Outputcuttlefish
索引号为从此list范围
0
-
4
,如表中所示的上方。因此,要单独调用任何项目,我们将引用索引号如下:
sea_creatures[0] = 'shark'
sea_creatures[1] = 'cuttlefish'
sea_creatures[2] = 'squid'
sea_creatures[3] = 'mantis shrimp'
sea_creatures[4] = 'anemone'
如果我们称之为list
sea_creatures
与任何一个索引数大于4时,将超出范围,因为它不会有效:
print(sea_creatures[18])
OutputIndexError: list index out of range
除了正指数数字,我们也可以从list中访问项具有负索引号,通过从list的末尾倒数,起始于
-1
。如果我们有一个长list,并且我们想要查找list末尾的项目,这是特别有用。 对于相同的list
sea_creatures
,负指数详细情况如下:
'shark' |
'cuttlefish' |
'squid' |
'mantis shrimp' |
'anemone' |
-5 |
-4 |
-3 |
-2 |
-1 |
所以,如果我们想打印出的项目
'squid'
通过使用其负指数,我们可以这样做是这样的:
print(sea_creatures[-2])
Outputsquid
我们可以与使用其他字符串list字符串拼接项目
+
运营商:
print('Sammy is a ' + sea_creatures[0])
OutputSammy is a shark
我们可以在索引号来连接字符串项
0
与字符串
'Sammy is a '
。 我们也可以用
+
运算符来
联接2个或多个list在一起 。 使用与list中的项目对应的索引编号,我们可以离散访问list中的每个项目,并处理这些项目。
修改List中的项目
我们可以使用索引来更改list中的项目,方法是设置一个等于不同值的索引号。这使我们能够更好地控制list,因为我们能够修改和更新它们包含的项目。 如果我们想在指数改变的项目的字符串值
1
从
'cuttlefish'
到
'octopus'
,我们可以这样做是这样的:
sea_creatures[1] = 'octopus'
现在,当我们打印
sea_creatures
,list会有所不同:
print(sea_creatures)
Output['shark', 'octopus', 'squid', 'mantis shrimp', 'anemone']
我们还可以使用负索引号来更改项目的值:
sea_creatures[-3] = 'blobfish'
print(sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
现在
'blobfish'
取代
'squid'
以负指数
-3
(其对应于正索引号
2
)。 能够修改list中的项目,使我们能够以有效的方式更改和更新list。
切片 List
我们还可以从list中调出几个项目。比方说,我们希望只是打印中间项目
sea_creatures
,我们可以通过创建一个
切片这样做。 随着切片,我们可以通过创建一系列由冒号隔开的索引号的调用多个值
[x:y]
print(sea_creatures[1:4])
Output['octopus', 'blobfish', 'mantis shrimp']
当创建一个切片,如在
[1:4]
中,第一索引号码是片的开始(含),并且所述第二索引号码是片的端部(不包括),这就是为什么在我们的上面的项目在示例位置,
1
,
2
,和
3
是打印出的项目。 如果我们想包括list的两端,我们可以忽略的数字之一
list[x:y]
语法。 例如,如果我们要打印的前3项list的
sea_creatures
-这将是
'shark'
,
'octopus'
,
'blobfish'
-我们可以通过打字这样做:
print(sea_creatures[:3])
Output['shark', 'octopus', 'blobfish']
此打印的list的开始,索引前右停止
3
。 要包含list末尾的所有项目,我们将颠倒语法:
print(sea_creatures[2:])
Output['blobfish', 'mantis shrimp', 'anemone']
当切片list时,我们也可以使用负索引号,就像使用正索引号一样:
print(sea_creatures[-4:-2])
print(sea_creatures[-3:])
Output['octopus', 'blobfish']
['blobfish', 'mantis shrimp', 'anemone']
我们可以用切片使用最后一个参数称为
步长 ,它是指有多少项目中的第一项是从list中检索后向前移动。到目前为止,我们省略了stride参数,Python默认为stride为1,因此检索两个索引号之间的每个项。 对于这种结构的语法是
list[x:y:z]
与
z
指大步。让我们做一个更大的list,然后切片,并给步长值2:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
print(numbers[1:11:2])
Output[1, 3, 5, 7, 9]
我们建设
numbers[1:11:2]
打印包容性的索引号之间的值
1
和专属的
11
,然后的跨距值
2
告诉程序只打印出所有其他项目。 我们可以省略前两个参数,并使用单独步长与语法的参数
list[::z]
print(numbers[::3])
Output[0, 3, 6, 9, 12]
通过打印list
numbers
设置步长为
3
,只有每个第三项被打印:
0, 1, 2,
3, 4, 5,
6, 7, 8,
9, 10, 11,
12 使用正索引和负索引编号并指示步长的list为我们提供了操作list和接收我们尝试实现的输出的控制。
使用操作符修改List
操作符可用于对list进行修改。我们来看看使用
+
和
*
运营商及其化合物的形式
+=
和
*=
。 在
+
操作符可以用来将两个或多个list串连在一起:
sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
oceans = ['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
print(sea_creatures + oceans)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
因为
+
操作者可以连接,它可用于以list的形式的项(或几个)添加到另一list的末尾。记住将项目放在方括号中:
sea_creatures = sea_creatures + ['yeti crab']
print (sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
的
*
操作者可以用来繁殖list。也许你需要将一个目录中的所有文件复制到服务器上,或者与朋友共享播放list - 在这些情况下,你需要多个数据集合。 让我们乘
sea_creatures
2list和
oceans
3list:
print(sea_creatures * 2)
print(oceans * 3)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
通过使用
*
运营商,我们可以通过我们指定的次数复制我们的List。 我们也可以使用复合形式的
+
和
*
操作符与赋值运算符
=
。 的
+=
和
*=
化合物运营商可以用来填充list以快速和自动的方式。您可以使用这些运算符使用占位符填充list,您可以稍后使用用户提供的输入修改这些占位符。 让我们以list形式将项目添加到list中
sea_creatures
。 此项目将作为占位符,我们希望多次添加此占位项。 要做到这一点,我们将使用
+=
运算符与for循环。
for x in range(1,4):
sea_creatures += ['fish']
print(sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish', 'fish']
用于循环的每次迭代中,一个额外的list项
'fish'
被添加到原始list
sea_creatures
。 该
*=
运算符的行为方式类似:
sharks = ['shark']
for x in range(1,4):
sharks *= 2
print(sharks)
Output['shark', 'shark']
['shark', 'shark', 'shark', 'shark']
['shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']
运算符
+
和
*
可以用来连接list和繁殖List。 该复合运算符
+=
和
*=
可以连接list和繁殖List,并通过新的身份到原来的list中。
从List中删除项目
项目可以从list中通过删除
del
声明。这将删除在list中指定的索引号处的值。 从
sea_creatures
List,让我们删除项目
'octopus'
。 该项目位于的索引位置
1
。 要删除的项目,我们将使用
del
语句然后调用list变量,而该项目的索引号:
sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
del sea_creatures[1]
print(sea_creatures)
Output['shark', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
现在,在索引位置的项目
1
,字符串
'octopus'
,是在我们的List不再
sea_creatures
。 我们也可以指定与一系列
del
声明。 假设我们想删除不仅项目
'octopus'
,也是
'blobfish'
和
'mantis shrimp'
也是如此。 我们可以调用一系列
sea_creatures
与
del
语句来实现:
sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
del sea_creatures[1:4]
print(sea_creatures)
Output['shark', 'anemone', 'yeti crab']
通过使用一系列的
del
语句,我们能够去除的索引号之间的项目
1
(含),和的索引号
4
(不含),使我们具有去除的3项以下的3项的list。 本
del
声明使我们能够从list中删除数据类型的具体项目。
使用List Items构造List
list可以用由list组成的项来定义,每个括号中的list包含在父list的较大括号内:
sea_names = [['shark', 'octopus', 'squid', 'mantis shrimp'],['Sammy', 'Jesse', 'Drew', 'Jamie']]
list中的这些list称为嵌套list。 要访问此list中的项目,我们必须使用多个索引:
print(sea_names[1][0])
print(sea_names[0][0])
OutputSammy
shark
第一个list,因为它等于一个项目,将具有索引号0,这将是构造中的第一个数字,第二个list将具有索引号1.在每个内部嵌套list中将有单独的索引号,我们将在第二个索引号中调用:
sea_names[0][0] = 'shark'
sea_names[0][1] = 'octopus'
sea_names[0][2] = 'squid'
sea_names[0][3] = 'mantis shrimp'
sea_names[1][0] = 'Sammy'
sea_names[1][1] = 'Jesse'
sea_names[1][2] = 'Drew'
sea_names[1][3] = 'Jamie'
在处理listlist时,请务必记住,您需要引用多个索引编号才能访问相关嵌套list中的特定项目。
结论
list数据类型是一种灵活的数据类型,可以在程序的整个过程中进行修改。本教程介绍了list的基本功能,包括索引,切片,修改和连接list。 您可以通过阅读教程
了解Python 3数据类型 。