繁体   English   中英

如何在不使用迭代器长度的情况下使用 python 中的 slice() 内置 function 获取迭代器的所有元素?

[英]How to get all elements of an iterator using slice() built-in function in python without using the iterator's length?

如果我有以下列表: my_list = [1, 2, 3] 如何在不知道my_list长度的情况下使用slice()内置方法获取所有元素?

my_list[slice(-1)]给我[1, 2]my_list[slice(':')]给我一个 TypeError。

是否有类似于my_list[:]的东西可以与 slice 一起使用,以便在创建列表之前定义变量?

你可以通过None

>>> my_list = [1, 2, 3]
>>> id(my_list)
1827682884416
>>> copy = my_list[slice(None)]
>>> id(copy)
1827682861888
>>> copy
[1, 2, 3]
>>> my_list is copy
False

我相信my_list[:]只是一个语法糖。 您可以通过dis模块确认这一点。

>>> import dis
>>> dis.dis("my_list[:]")
  1           0 LOAD_NAME                0 (my_list)
              2 LOAD_CONST               0 (None)
              4 LOAD_CONST               0 (None)
              6 BUILD_SLICE              2
              8 BINARY_SUBSCR
             10 RETURN_VALUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM