在使用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]