【Python基础语法】操作列表之使用列表的一部分---切片

一、创建切片

1.要创建切片,可指定要使用的第一个元素和最后一个元素的索引。
2.切片与range( )函数一样,在到达你指定的第二个索引前面的元素后停止,即左闭右开。例如,要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2的元素。
3.可以生成列表的任何部分。例如如果你要提取列表的第2~4个元素,可将其实索引指定为1,并将终止索引指定为4。
4.如果没有指定第一个索引,python将自动从列表开头开始。
5.如果没有指定最后一个索引,python将默认到最后一个元素结束。例如要提取从低个元素到列表末尾的所有元素,可将起始索引指定为2,并省略终止索引。
6.负数索引返回离列表末尾相应距离的元素,因此可以输出列表末尾的任何切片。例如,如果要输出名单上的最后三名队员,可使用players[-3:]。即使队员名单的长度发生变化,也依然如此。

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) # 输出第0到第2个元素
print(players[1:4]) # 输出第1到第4个元素
print(players[:4]) # 没有指定第一个索引时,自动从列表开头开始,输出第0到第4个元素
print(players[2:]) # 没有指定最后一个索引时,默认到末尾,输出第2到最后一个元素
print(players[-3:]) # 负数索引返回离列表末尾相应距离的元素,故输出列表中最后三个元素

在这里插入图片描述

二、遍历切片

可以通过在for循环中使用切片来遍历列表的部分元素。如遍历前三名队员,并打印他们的名字:

players = ['charles', 'martina', 'michael', 'florence', 'eli']

print("Here are the first three players on my team:")
for player in players[:3]:
	print(player.title())

在这里插入图片描述

三、复制列表

1.方法:可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止做阴([ :])。这样做让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制了整个列表。

my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]

my_foods.append("cannoli")
friend_foods.append("ice cream")

print("My favorite foods are:")
print(my_foods)
for my_food in my_foods:
	print(my_food)

print("\nMy friend's favorite foods are:")
print(friend_foods)
for friend_food in friend_foods:
	print(friend_food)

在这里插入图片描述

上面的例子中,首先创建了一个名为my_foods的食品列表,然后创建了一个名为friend_foods的新列表。在不指定任何索引的情况下从列表my_foods中提取一个切片,从而创建了这个列表的副本,再将该副本存储到变量friend_foods中。为核实确实是两个列表,在my_foods和friend_foods列表中分别添加一种食品,可以看到是两个不同的列表。

2.简单地将一个列表赋给另一个列表,就不能得到两个列表。

my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods

my_foods.append("cannoli")
friend_foods.append("ice cream")

print("My favorite foods are:")
print(my_foods)

print("\nMy friend's favorite foods are:")
print(friend_foods)

在这里插入图片描述
上面这个例子只是将my_foods赋给friend_foods,而不是将my_foods的副本存储到friend_foods中。这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,因此这两个变量都指向同一个列表,所以此时my_foods和friend_foods其实是一个列表。故最后添加的两个元素都出现在了两个列表中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值