что означает k [: 0], если k пустой список - PullRequest
1 голос
/ 31 января 2020

Я хочу знать, что означает список [: 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']
  • Не должен ли l oop разрываться, когда len(k)==20?
  • Если k[:0] - пустой список, почему каждый раз, когда внутри k нет списка ??
  • Работает ли k[:0] как стек и выталкивает старые элементы?

1 Ответ

0 голосов
/ 31 января 2020

Какой-то странный здесь. И это трудно объяснить.

k[:0] всегда говорит о пустом диапазоне в начале списка. На самом деле любой фрагмент пустого списка является пустым списком.

Поскольку это фрагмент, он повторяется, хотя и без каких-либо элементов. Как и в случае установки нескольких переменных одновременно, для него можно задать итеративные, но не отдельные значения.

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

В то время как l oop на самом деле ничего не делает, потому что for l oop работает через все в LETTERS, а затем нарушает условие.

Шаги в вашей программе:

  1. Инициализация пустого списка
  2. Установите пустой диапазон на начало списка ([]) - ['A']
  3. Повторите для всех остальных букв.
  4. Теперь список состоит из 26 элементов, поэтому мы не доходим до следующая итерация while l oop.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...