【问题标题】:Iterative sliced indexing (python) starting form the end : how to avoid "-0" to be equal to "0"?从头开始的迭代切片索引(python):如何避免“-0”等于“0”?
【发布时间】:2021-06-16 07:33:13
【问题描述】:

我有一个列表(实际上是一个 pandas.DataFrame,但让我们把它简单化),比方说:

a = list(range(10))

我必须对其进行迭代并在每个循环中提取从开始到“移动结束”的所有元素。我希望在第一次迭代时整个列表,在第二次迭代时删除最后一个元素,在第三次删除最后两个元素......等等。

编码似乎很容易:

for i in range(5) :
    print(i,a[:-i])

事实上,这段代码从“1”及以后的代码都可以正常工作。但是对于 i=0 我得到一个空列表,而我想获得完整列表。

我知道“-0”等于“0”,这就是我有这种行为的原因......但是我能做些什么吗?

谢谢!

【问题讨论】:

  • 对不起,但它不是那样工作的。你可以通过[:-1]做移动端,然后你必须单独做整个列表。
  • 您可以使用cycle 继续列表。

标签: python indexing slice


【解决方案1】:

您可以显式计算结束索引:

for i in range(5):
    print(i, a[: len(a) - i])

或者在零时将结束索引替换为None

for i in range(5):
    print(i, a[: -i or None])

【讨论】:

    【解决方案2】:

    我终于找到了如何处理它,通过将列表长度添加到负索引端:

    for i in range(5) :
        print(i,a[:len(a)-i])
    

    此修改在第一次迭代时生成整个列表(期望的结果)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 2018-01-27
      • 2014-03-04
      • 2017-12-10
      相关资源
      最近更新 更多