k [:0]的含义是,如果k是一个空列表

问题描述 投票:0回答:1

我想知道list [:0]的含义。在以下代码中,它在做什么?

LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
k=[]
while len(k) < 20:
    for i in LETTERS:
        k[:0] = i

print(k)

# k = ['Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A']
  • len(k)==20时循环不中断吗?
  • 如果k[:0]是一个空列表,为什么每次k内都没有列表?
  • k[:0]是否像堆栈一样工作,并推动较旧的项目?
python list listview python-3.7 object-slicing
1个回答
0
投票

这里有些怪异。很难解释。

k[:0]总是在列表开头谈论空范围。实际上,空列表的任何片都是空列表。

因为它是一个切片,所以可以迭代,尽管没有任何元素。就像一次设置多个变量一样,可以将其设置为可迭代的值,但不能设置为单个值。

k[:0] = '123'  # puts '1', '2', '3' at the start
k[:0] = 123    # TypeError

while循环实际上并没有执行任何操作,因为for循环贯穿LETTERS中的所有内容,然后破坏了条件。

程序中的步骤是:

  1. 初始化一个空列表
  2. 将列表的开头([])的空白范围设置为['A']
  3. 重复所有其他字母。
  4. 该列表现在有26个元素,所以我们不会进入while循环的下一个迭代。
© www.soinside.com 2019 - 2024. All rights reserved.