Python如何无需知晓长度就用slice()内置函数获取迭代器全部元素
直接用slice(None)就能实现和my_list[:]完全一致的全量切片效果,不需要提前知道列表长度,也支持提前定义切片变量。
原理说明
Python的slice()构造函数三个参数分别对应切片语法[start:end:step]里的三个值,对应位置如果在切片语法里留空,传None给slice()就行:
- 你之前用的
slice(-1)等价于只给了end参数,对应切片[:-1],自然会丢失最后一个元素 - 传字符串
':'不符合slice()的参数类型要求,才会抛出TypeError
用法示例
# 列表还没创建的时候就可以提前定义好切片变量 full_slice = slice(None) # 后续创建列表直接用就行 my_list = [1, 2, 3] print(my_list[full_slice]) # 输出 [1, 2, 3] # 所有支持切片的序列都通用,包括元组、字符串等 my_tuple = (4, 5, 6) print(my_tuple[full_slice]) # 输出 (4, 5, 6)
如果要显式写全参数也可以,slice(None, None, None)和slice(None)效果完全一致。
内容的提问来源于stack exchange,提问作者Manuel Montoya
相关产品推荐
相关产品推荐

