Python列表操作全解:遍历、切片、解析与元组
本文详解Python中列表的核心操作。涵盖使用for循环遍历列表元素、利用range函数生成数字序列、通过列表解析式简化代码、使用切片处理部分列表以及复制列表的技巧。此外,还介绍了不可变的元组数据结构及其与列表的区别,帮助开发者高效处理数据集合。
Python列表遍历与for循环
1.遍历列表
当需要对列表中的每个元素执行相同的操作时,可以使用for循环来实现:
magicians = ['alice','david','carolina']
for magician in magicians:
print(magician)
>>>alice
>>>david
>>>carolina
在循环执行过程中,Python首先读取第一行代码:
for magician in magicians:
这行代码指示Python从列表magicians中获取第一个值('alice'),并将其存储到变量magician中。随后,Python执行下一行代码:
print(magician)
该代码让Python打印变量magician的值,此时输出为'alice'。由于列表中还有其他元素,Python会返回到循环的第一行继续执行:
for magician in magicians:
Python接着获取列表中的下一个名字——'david',将其存入变量magician,并执行随后的代码:
print(magician)
这一过程会持续进行,直到处理完列表中的最后一个元素。
无论列表包含多少个元素,循环指定的步骤都会对每个元素执行一次。即使列表包含一百万个元素,Python也会重复执行指定步骤一百万次,且通常运行速度非常快。使用for循环处理数据是一种对数据集执行整体操作的高效方式。
2.避免缩进错误,Python根据缩进来判断代码行与前一个代码行的关系
2.1未缩进的情况示例:
magicians = ['alice','david','carolina']
for magician in magicians:
print(magician)
IndentationError: expected an indented block
2.2循环后的冒号
for语句末尾的冒号告诉Python,下一行是循环的第一行。如果不小心遗漏了冒号,将导致语法错误。
使用range()创建数值列表
3.创建数值列表
3.1函数range()
for value in range(1,5):
print(value)
>>>1
>>>2
>>>3
>>>4
函数range()让Python从你指定的第一个值开始计数,在到达你指定的第二个值前停止,因此输出结果不包含第二个值。
3.2使用range()创建数字列表
将range()作为list()的参数,输出结果将是一个数字列表。
numbers = list(range(1,6))
print(numbers)
>>>[1, 2, 3, 4, 5]
range()函数还可以指定步长:
even_numbers = list(range(1,13,2))
print(even_numbers)
>>>[1, 3, 5, 7, 9, 11]
函数range()从1开始计数,然后不断地加2,直到达到或超过终值。
使用函数range()几乎能够创建任何需要的数字集合。
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表解析与切片操作
4.列表解析
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素:
squares = [value**2 for value in range(1,11)]
print(squares)
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
首先,指定一个描述性的列表名,如squares。然后指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2,它计算平方值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这里的for语句末尾没有冒号。
5.列表切片(处理部分列表元素)
与range()一样,指定要使用的第一个元素和最后一个元素的索引,到达指定的第二个索引值前面的元素后停止。
players = ['charles','martina','michael','florence','eli']
print(players[0:3])
>>>['charles', 'martina', 'michael']
未指定起始索引及终止索引的情况:
players = ['charles','martina','michael','florence','eli']
print(players[:4])
>>>['charles', 'martina', 'michael', 'florence']
players = ['charles','martina','michael','florence','eli']
print(players[1:])
>>>['martina', 'michael', 'florence', 'eli']
players = ['charles','martina','michael','florence','eli']
print(players[-3:])
>>>['michael', 'florence', 'eli']
6.遍历切片
要遍历列表的部分元素,可在for循环中使用切片。
players = ['charles','martina','michael','florence','eli']
print("Here are the first three players in my team:")
for player in players[0:3]:
print(player.title())
>>>Here are the first three players in my team:
>>>Charles
>>>Martina
>>>Michael
处理数据时,可使用切片来进行批量处理;编写Web应用程序时,可使用切片来分页显示信息。
列表复制与元组使用
7.复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
my_foods = ['pizza','falafel','carrot cake']
friend_foods = my_foods[:]
print(my_foods)
print(friend_foods)
>>>['pizza', 'falafel', 'carrot cake']
>>>['pizza', 'falafel', 'carrot cake']
my_foods = ['pizza','falafel','carrot cake']
# friend_foods和my_foods指向同一个列表
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print(my_foods)
print(friend_foods)
>>>['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
>>>['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
8.元组
列表是可以修改的,然而,如果需要创建一系列不可修改的元素,元组可以满足这种需求。不可变的列表被称为元组。
元组看起来犹如列表,但使用圆括号而不是方括号来标识。
dimensions = (200,50)
print(dimensions[0])
print(dimensions[1])
>>>200
>>>50
元组元素不可更改:
dimensions = (200,50)
dimensions[0] = 230
>>>dimensions[0] = 230
>>>TypeError: 'tuple' object does not support item assignment
8.1 for循环遍历元组
dimensions = (200,50,100)
for dimension in dimensions:
print(dimension)
>>>200
>>>50
>>>100
8.2修改元组变量
元组元素不可更改,但可以给存储元组的变量重新赋值。
dimensions = (200,50,100)
for dimension in dimensions:
print(dimension)
dimensions = (50,40,30)
for dimension in dimensions:
print(dimension)
>>>200
>>>50
>>>100
>>>50
>>>40
>>>30
相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。
以上所述是小编给大家介绍的Python操作列表详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













