python - 如果 k 是空列表,k[ :0] means, 会做什么

标签 python list listview python-3.7 object-slicing

我想知道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 中的所有内容,然后打破条件。

程序中的步骤是:

  1. 初始化一个空列表
  2. 将列表开头的空白范围 ([]) 设置为 ['A']
  3. 对所有其他字母重复上述操作。
  4. 列表现在有 26 个元素长,因此我们不会进入 while 循环的下一次迭代。

关于python - 如果 k 是空列表,k[ :0] means, 会做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59995467/

相关文章:

python - 当进程在 python 中完成时,有什么方法不调用类的析构函数吗?

android - 返回android中复选框的选中状态

使用 GroupStyle 时 WPF 多页 Listview 打印

android - 在 ListView 上回收位图会导致问题

python - 为什么将列表转换为集合比仅使用列表来计算列表差异更快?

python - 如何使用 requirements.txt 在 python 项目中安装所有依赖项

python - 将 UNC 存储在 JSON 中并加载到字典中

ios ShareKit 2.0 从 facebook 获取用户好友列表的方法?

python - 如何在列表中查找字符串的总和

html - 在悬停时调整元素的大小以不移动其他元素