1. 首页
  2. 技术文章

24、Python列表

在本教程中,我们将学习有关Python列表,它们如何创建,列表切片,从中添加或删除元素等所有知识。

Python提供了一系列通常称为序列的复合数据类型。List是Python中使用最频繁且用途最广泛的数据类型之一。


如何建立列表?

在Python编程中,通过将所有项目(元素)放在方括号内[]并用逗号分隔来创建列表。

它可以具有任意数量的项目,并且它们可以具有不同的类型(整数,浮点数,字符串等)。

# empty list
my_list = []

# list of integers
my_list = [1, 2, 3]

# list with mixed data types
my_list = [1, "Hello", 3.4]

列表也可以将另一个列表作为项目。这称为嵌套列表。

# nested list
my_list = ["mouse", [8, 4, 6], ['a']]

访问列表元素

我们可以通过多种方式访问​​列表的元素。

列表索引

我们可以使用索引运算符[]来访问列表中的项目。在Python中,索引从0开始。因此,包含5个元素的列表的索引从0到4。

尝试访问除这些以外的索引将引发IndexError。索引必须是整数。我们不能使用float或其他类型,这将导致TypeError

使用嵌套索引访问嵌套列表。

# List indexing

my_list = ['p', 'r', 'o', 'b', 'e']

# Output: p
print(my_list[0])

# Output: o
print(my_list[2])

# Output: e
print(my_list[4])

# Nested List
n_list = ["Happy", [2, 0, 1, 5]]

# Nested indexing
print(n_list[0][1])

print(n_list[1][3])

# Error! Only integer can be used for indexing
print(my_list[4.0])

输出

p
Ø
Ë
一种
5
追溯(最近一次通话):
  <模块>中第21行的文件“ <字符串>”
TypeError:列表索引必须是整数或切片,而不是浮点型

负索引

Python允许对其序列进行负索引。索引-1表示最后一项,-2表示倒数第二项,依此类推。

# Negative indexing in lists
my_list = ['p','r','o','b','e']

print(my_list[-1])

print(my_list[-5])

当我们运行上面的程序时,我们将得到以下输出:

Ë
p
Python列表索引
Python中的列表索引

如何在Python中切片列表?

我们可以使用切片运算符:(冒号)访问列表中的一系列项目。

# List slicing in Python

my_list = ['p','r','o','g','r','a','m','i','z']

# elements 3rd to 5th
print(my_list[2:5])

# elements beginning to 4th
print(my_list[:-5])

# elements 6th to end
print(my_list[5:])

# elements beginning to end
print(my_list[:])

输出

['o','g','r']
['p','r','o','g']
['a','m','i','z']
['p','r','o','g','r','a','m','i','z']

通过考虑索引位于元素之间,可以最好地可视化切片,如下所示。因此,如果要访问一个范围,我们需要两个索引,这些索引将从列表中切出该部分。

从Python列表中进行元素切片
从Python列表中进行元素切片

添加/更改列表元素

列表是可变的,这意味着可以更改它们的元素,而不是stringtuple

我们可以使用赋值运算符=来更改一个项目或一系列项目。

# Correcting mistake values in a list
odd = [2, 4, 6, 8]

# change the 1st item    
odd[0] = 1            

print(odd)

# change 2nd to 4th items
odd[1:4] = [3, 5, 7]  

print(odd)                   

输出

[1,4,6,8]
[1、3、5、7]

我们可以使用append()方法将一个项目添加到列表中,或者使用extend()方法将多个项目添加到列表中。

# Appending and Extending lists in Python
odd = [1, 3, 5]

odd.append(7)

print(odd)

odd.extend([9, 11, 13])

print(odd)

输出

[1、3、5、7]
[1、3、5、7、7、9、11、13]

我们还可以使用+运算符来合并两个列表。这也称为串联。

*操作重复次数达到一定数目的清单。

# Concatenating and repeating lists
odd = [1, 3, 5]

print(odd + [9, 7, 5])

print(["re"] * 3)

输出

[1、3、5、9、7、5]
['re','re','re']

此外,我们可以使用该方法在所需位置插入一项,也可以insert()通过将其压缩到列表的空切片中来插入多项。

# Demonstration of list insert() method
odd = [1, 9]
odd.insert(1,3)

print(odd)

odd[2:2] = [5, 7]

print(odd)

输出

[1、3、9]
[1、3、5、7、9]

删除/删除列表元素

我们可以使用关键字从列表中删除一个或多个项目del。它甚至可以完全删除列表。

# Deleting list items
my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']

# delete one item
del my_list[2]

print(my_list)

# delete multiple items
del my_list[1:5]

print(my_list)

# delete entire list
del my_list

# Error: List not defined
print(my_list)

输出

['p','r','b','l','e','m']
['p','m']
追溯(最近一次通话):
  <模块>中第18行的文件“ <字符串>”
NameError:未定义名称“ my_list”

我们可以使用remove()method删除给定项目,也可以使用method删除给pop()定索引处的项目。

pop()如果未提供索引,则该方法将删除并返回最后一项。这有助于我们将列表实现为堆栈(先进先出数据结构)。

我们还可以使用该clear()方法清空列表。

my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')

# Output: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'o'
print(my_list.pop(1))

# Output: ['r', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'm'
print(my_list.pop())

# Output: ['r', 'b', 'l', 'e']
print(my_list)

my_list.clear()

# Output: []
print(my_list)

输出

['r','o','b','l','e','m']
Ø
['r','b','l','e','m']
['r','b','l','e']
[]

最后,我们还可以通过为元素切片分配一个空列表来删除列表中的项目。

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

Python列表方法

下面列出了Python编程中列表对象可用的方法。

它们以方式访问list.method()。上面已经使用了某些方法。

Python列表方法
append()- 将元素添加到列表的末尾
extend() 将列表的所有元素添加到另一个列表
insert() 在定义的索引处插入一个项目
remove() 从列表中删除一个项目
pop() 删除并返回给定索引处的元素
clear() -从列表中删除所有项目
index() -返回第一个匹配项的索引
count() -返回作为参数传递的项目数的计数
sort() -以升序对列表中的项目进行排序
reverse() -反转列表中项目的顺序
copy() -R返回列表的浅表副本

Python列表方法的一些示例:

# Python list methods
my_list = [3, 8, 1, 6, 0, 8, 4]

# Output: 1
print(my_list.index(8))

# Output: 2
print(my_list.count(8))

my_list.sort()

# Output: [0, 1, 3, 4, 6, 8, 8]
print(my_list)

my_list.reverse()

# Output: [8, 8, 6, 4, 3, 1, 0]
print(my_list)

输出

1个
2个
[0、1、3、4、6、8、8]
[8、8、6、4、3、1、0]

列表理解:创建列表的优雅方式

列表理解是从Python中的现有列表创建新列表的一种简洁明了的方法。

列表推导包含一个表达式,后跟方括号内的for语句

这是一个列出每项增加2的幂的列表的示例。

pow2 = [2 ** x for x in range(10)]
print(pow2)

输出

[1、2、4、8、16、32、64、128、256、512]

此代码等效于:

pow2 = []
for x in range(10):
   pow2.append(2 ** x)

列表推导可以选择包含更多forif语句。可选if语句可以过滤出新列表的项目。这里有些例子。

>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']

Python中的其他列表操作

列出会员资格测试

我们可以使用关键字来测试列表中是否存在某项in

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']

# Output: True
print('p' in my_list)

# Output: False
print('a' in my_list)

# Output: True
print('c' not in my_list)

输出

True
False
True

遍历列表

使用for循环,我们可以遍历列表中的每个项目。

for fruit in ['apple','banana','mango']:
    print("I like",fruit)

输出

I like apple
I like banana
I like mango
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code