前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
以下文章来源于决策不拍头,作者 Dark Horse
什么是切片,其实就是列表的一部分。比如下面这个列表:
1players = ['james','anthony','wade','rose','curry']
你只想取中间这3个名字,可以这么做:
1
2print(players[1:4]) ['anthony', 'wade', 'rose']
players[1:4]就是一个切片,前面是列表对应的变量,后面用中括号括起来,里面就是起始索引和终止索引,中间用冒号连接起来。这个索引也是含左不含右的,对于这个例子,就是从1开始,到4为止,但是不包括4这个位置上的元素。
如果省略起始索引,那么意味着索引从0开始:
1
2print(players[:4]) ['james', 'anthony', 'wade', 'rose']
如果省略终止索引,那么意味着切片会取到列表的最后一个元素:
1
2print(players[1:]) ['anthony', 'wade', 'rose', 'curry']
索引中也可以使用负数,意味着从列表的末端截取元素:
1
2print(players[-2:]) ['rose', 'curry']
遍历切片
切片中也可以使用for循环:
1
2for player in players[:3]: print(player.title())
结果如下:
1
2
3James Anthony Wade
复制整个列表
想要复制整个列表,其实就是把切片从头取到尾,那么可以同时省略起始索引和终止索引,只留下冒号:
1new_players = players[:]
为了验证确实复制了整个列表,我们给原列表players和新复制的列表new_players各添加一个不同的元素,然后将其分别打印:
1
2
3
4players.append('thompson') new_players.append('durant') print(players) print(new_players)
我们来看下结果,确实列表被完整复制了:
1
2['james', 'anthony', 'wade', 'rose', 'curry', 'thompson'] ['james', 'anthony', 'wade', 'rose', 'curry', 'durant']
注意,复制列表时的冒号一定不要忘记。我们来看看如果忘记冒号,会发生什么后果:
1
2
3
4
5
6players = ['james','anthony','wade','rose','curry'] new_players = players players.append('thompson') new_players.append('durant') print(players) print(new_players)
重点关注第2行代码,我们并没有使用切片,而是直接将新列表new_players关联到了旧列表players,接下来仍然给两个列表添加不同的元素,我们来看看打印的结果吧:
1
2['james', 'anthony', 'wade', 'rose', 'curry', 'thompson', 'durant'] ['james', 'anthony', 'wade', 'rose', 'curry', 'thompson', 'durant']
我们发现,两个列表完全一致,而且新添加的两个元素都被加到了其中,这是为什么呢?
其实,就是我们之前说过的,变量可以看做是一个标签,它指向了某个内容。
这个例子中,变量players指向了列表['james','anthony','wade','rose','curry']。在第2行代码中,新变量new_players又和变量players关联到了一起,因此新变量new_players也指向了这个列表['james','anthony','wade','rose','curry']。
因此,无论之后给哪个变量添加新的元素,它们指向的都是同一个列表,所以最终输出的两个列表就会完全一样了。
最后
以上就是魁梧学姐最近收集整理的关于Python基础知识点:切片前言遍历切片复制整个列表的全部内容,更多相关Python基础知识点内容请搜索靠谱客的其他文章。
发表评论 取消回复