Python中列表和字符串的切片

本文探讨了Python中列表逆序的常见误区,详细解释了reverse()方法的工作原理及为何不能直接用于创建逆序的新列表。通过对比不同的逆序方法,介绍了列表切片的强大功能,展示了如何利用切片快速生成逆序列表,避免了因地址赋值导致的同步变化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Python解题的过程中,遇到这样的情况:
我需要将列表逆转再与原来的列表比较是否相同。作为小白,我第一个想到的就是reverse()
既有如下代码:

# 1.将列表逆转后赋值给新的列表
list_num2 = list_num.reverse()

后来很尴尬的发现新列表的值总是为空,经过查找后发现这个方法是没有返回值的
上面的方法行不通,又想到一个办法:

# 将列表的值赋值给新的列表,再将新列表逆转
list_num2 = list_num
list_num2.reverse

运行的时候发现两个列表的值总是一样的。原因是Python中的赋值是地址赋值,新列表获取到原列表的地址,在这个地址上对列表进行操作,所以两个列表会同步变化。

这个时候切片的重要性就体现出来,对列表进行切片操作时才会产生新的列表。

# 返回值 = 列表名[初始下标:结束下标(切片不包括自己):步长]

In [30]: list_num = [1, 2, 3, 4, 5]

In [31]: list_num
Out[31]: [1, 2, 3, 4, 5]

In [32]: list_num[::2]  # 下标默认开头或结尾
Out[32]: [1, 3, 5]

In [33]: list_num[0:4]  # 步长默认为1
Out[33]: [1, 2, 3, 4]

In [34]: list_num[::-1]  # 步长为负,从后向前切片,列表的逆转
Out[34]: [5, 4, 3, 2, 1]

字符串的切片操作与列表相同

这时候实现上述功能就很简单了

list_num2 = list_num[::2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值