Python 如果k是一个空列表,那么k[:0]意味着什么

Python 如果k是一个空列表,那么k[:0]意味着什么,python,list,listview,python-3.7,object-slicing,Python,List,Listview,Python 3.7,Object Slicing,我想知道列表[: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'

我想知道列表[: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']
LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
k=[]
而len(k)<20:
就我而言,写信:
k[:0]=i
印刷品(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]
      总是在列表开头谈论空范围。事实上,空列表的任何部分都是空列表

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

      k[:0] = '123'  # puts '1', '2', '3' at the start
      k[:0] = 123    # TypeError
      
      while循环实际上什么都不做,因为for循环以
      字母
      遍历所有内容,然后破坏条件

      程序中的步骤包括:

    • 初始化空列表
    • 将列表开头的空范围(
      []
      )设置为['A']
    • 对所有其他字母重复上述步骤
    • 该列表现在有26个元素长,因此我们无法进入while循环的下一次迭代

    • 这回答了你的问题吗
      k[:0]
      在切片赋值中的含义与切片表达式不同。循环不会中断,因为它会运行一次完整的
      for
      循环,然后检查
      k
      的长度。