Python高级用法:索引和切片

大家好,我是老马的程序人生~

Python语言语法简洁,易于上手,但当你深入研究时,会发现Python有很多高级用法,这些高级用法可以大幅度提高代码的可读性和运行效率。

下面介绍Python的高级用法之一:索引与切片。

在Python中,获取列表的元素不仅可以使用索引,还可以使用切片操作。

索引:

  • 通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。
  • 通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。

【例子】

x = ['Monday', 'Tuesday', 'Wednesday', ['Thursday', 'Friday']]
print(x[0], type(x[0]))  # Monday <class 'str'>
print(x[-1], type(x[-1]))  # ['Thursday', 'Friday'] <class 'list'>
print(x[-2], type(x[-2]))  # Wednesday <class 'str'>

切片:

切片的通用写法是 start : stop : step

  • 情况 1:“start :”
  • step 为 1 (默认) 从编号 start 往列表尾部切片。

【例子】

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:])  # ['Thursday', 'Friday']
print(x[-3:])  # ['Wednesday', 'Thursday', 'Friday']
  • 情况 2:“: stop”
  • step 为 1 (默认) 从列表头部往编号 stop 切片。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3])  # ['Monday', 'Tuesday', 'Wednesday']
print(week[:-3])  # ['Monday', 'Tuesday']
  • 情况 3:“start : stop”
  • step 为 1 (默认) 从编号 start 往编号 stop 切片。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:3])  # ['Tuesday', 'Wednesday']
print(week[-3:-1])  # ['Wednesday', 'Thursday']
  • 情况 4:“start : stop : step”
  • 以具体的 step 从编号 start 往编号 stop 切片。注意最后把 step 设为 -1,相当于将列表反向排列。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:-3:-1])  # ['Friday', 'Thursday']
print(week[:-6:-1])  # ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
print(week[:-9:-1])  # ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
print(week[3:-3:-1])  # ['Thursday']
print(week[2:-3:-1])  # []
  • 情况 5:" : "
  • 复制列表中的所有元素(浅拷贝)。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

【例子】浅拷贝

list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]

print(list2)  # [123, 456, 789, 213]
print(list3)  # [123, 456, 789, 213]
list1.sort()
print(list2)  # [123, 213, 456, 789] 
print(list3)  # [123, 456, 789, 213]

【例子】理解浅拷贝与深拷贝

import copy

list1 = [[123, 456], [789, 213]]
list2 = list1
list3 = list1[:]
list4 = copy.deepcopy(list1)
print(list2)  # [[123, 456], [789, 213]]
print(list3)  # [[123, 456], [789, 213]]
print(list4)  # [[123, 456], [789, 213]]
list1[0][0] = 111
print(list2)  # [[111, 456], [789, 213]]
print(list3)  # [[111, 456], [789, 213]]
print(list4)  # [[123, 456], [789, 213]]

总结

猜你喜欢

转载自blog.csdn.net/LSGO_MYP/article/details/124907358