我想知道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]
是否像堆栈一样工作并推送较旧的项目?
最佳答案
这里有点奇怪。而且很难解释。
k[:0]
始终谈论列表开头的空范围。事实上,空列表的任何切片都是空列表。
因为它是一个切片,所以它是可迭代的,尽管没有任何元素。就像一次设置多个变量一样,它可以设置为可迭代的值,但不能设置为单个值。
k[:0] = '123' # puts '1', '2', '3' at the start
k[:0] = 123 # TypeError
while 循环实际上并没有执行任何操作,因为 for 循环会遍历 LETTERS
中的所有内容,然后打破条件。
程序中的步骤是:
- 初始化一个空列表
- 将列表开头的空白范围 (
[]
) 设置为 ['A'] - 对所有其他字母重复上述操作。
- 列表现在有 26 个元素长,因此我们不会进入 while 循环的下一次迭代。
关于python - 如果 k 是空列表,k[ :0] means, 会做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59995467/