你们学习的Python列表处理是这些吗?使用列表的一部分

前面我们学习了如何访问单个列表元素。也学习了如何处理列表的所有元素。
那我们还可以处理列表的部分元素----Python称为【切片】。

切片

要创建切片,可指定要使用的第一个元素的索引和最后一个元素的索引加1。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引【0~3】,这将输出分别为,0,1,2。
示例代码:

players = ['charles','martina','michael','florence','eli']
print ( players[0:3] )  #打印该列表的一个切片。其中只包含三名队员,输出也是一个列表。

输出结果:

['charles', 'martina', 'michael']
[Finished in 0.2s]

如果我们没有指定第一个索引,Python将自动从列表的开头开始:
代码示例:

players = ['charles','martina','michael','florence','eli']
print ( players[ :3] )

结果如下:

['charles', 'martina', 'michael']
[Finished in 0.1s]

要让切片终止于列表的末尾,也可使用类似的语法。
代码示例:

players = ['charles','martina','michael','florence','eli']
print ( players[ 2: ] )

结果如下:

['michael', 'florence', 'eli']
[Finished in 0.0s]

无论列表多长,这种语法都能够让你输出从特定的位置到列表末尾的所有元素。本书前面说过,负数索引返回离列表末尾相应举例的元素。因此你可以输出列表末尾的任何切片。
示例代码:

players = ['charles','martina','michael','florence','eli']
print ( players[ -3 : ] )

返回结果:

players = ['charles','martina','michael','florence','eli']
print ( players[ -3 : ] )

遍历切片

如果要遍历列表的部分元素,可在for循环中使用切片。
示例代码:

players = ['charles','martina','michael','florence','eli']
for player in players [1:4]: 
    print ( player.title() )

输出结果:

Martina
Michael
Florence
[Finished in 0.0s]

复制列表

我们经常需要根据既有列表创建全新的列表。
要复制列表,先创建一个包含整个列表的切片,方法是同时省略,起始索引和终止索引[ : ]。

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

输出结果如下:

['pizza', 'falafel', 'carrot cake']
['pizza', 'falafel', 'carrot cake']
[Finished in 0.1s]

为了核实我们确实有两个列表,下面在每个列表中都添加一个食品,并核实每个列表都记录了相应不同的食品。
代码示例:

my_foods = ['pizza','falafel','carrot cake']
friend_foods = my_foods[ : ]
my_foods.append('cannoli')
friend_foods.append('ice cream')
print (my_foods)
print (friend_foods)

返回结果:

['pizza', 'falafel', 'carrot cake', 'cannoli']
['pizza', 'falafel', 'carrot cake', 'ice cream']
[Finished in 0.1s]

上面输出的结果显示,我们有两个完全不懂的列表。

如果我们只是简单的将my_foods赋值给friend_foods就不能得到两个列表。
示例代码:

my_foods = ['pizza','falafel','carrot cake']
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']
[Finished in 0.1s]

上面代码将my_foods赋值给friend_foods而不是将my_foods的副本存储在friend_foods这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,所以这两个变量都指向同一个列表。

注意:
现在暂时不考虑上面示例中的细节,基本上,当我们试图使用列表的副本时,如果结果出乎意料,请确认你像第一个示例那样使用切片复制了列表。

元组

Python将不能修改的值称为不可变的,而不可变的列表称为【元组】。

定义元组

元组看起来像列表。但使用的是圆括号而不是方括号来标识。
定义元组以后,就可以使用索引来访问其元素,就像访问列表一样。
代码示例:

dimensions = ( 200 , 50 )
print ( dimensions[0] )   #访问元组里面的元素时,后面也是使用方括号来索引
print ( dimensions[1] )

输出结果如下:

200
50
[Finished in 0.0s]

遍历元组中的所有元素

也是使用for循环来遍历
代码示例:

dimensions = ( 200 , 50 )
for dimension in dimensions:
    print ( dimension )

输出结果:

200
50
[Finished in 0.1s]

修改元组变量

虽然不能修改元组的元素,但是可以给存储元组的变量赋值。

示例代码:
如果要修改前面说的矩形的尺寸,可重新定义整个元组。

dimensions = ( 200 , 50 )
for dimension in dimensions:
    print ( dimension )
print ('\n')
dimensions = ( 150,75 )
for dimension in dimensions:
    print ( dimension )

输出结果如下:

200
50


150
75
[Finished in 0.0s]

相比列表,元组是更简单的数据结构,如果需要存储一组值,在程序的整个生命周期内都不变,可使用元组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值