Перечислять в Python переменных позиций - PullRequest
0 голосов
/ 31 марта 2020

Я хотел бы знать: в чем разница между этими двумя:

return "-".join([c.upper() + c.lower() * i for i,c in enumerate(txt)])
return "-".join([c.upper() + c.lower() * i for c,i in enumerate(txt)])

Я просто изменил «i» на «c», и весь код не работает. Есть ли простое объяснение?

1 Ответ

3 голосов
/ 31 марта 2020

Да. enumerate() возвращает пары (index, item) из заданной итерации.

Для строки "hello" будет возвращено (отформатировано в виде списка)

[
  (0, 'h'),
  (1, 'e'),
  (2, 'l'),
  (3, 'l'),
  (4, 'o'),
]

Ради простоты давайте рассмотрим только первый элемент: (0, 'h').

Если вы используете i, c для распаковки, значение i будет 0, а значение c будет 'h' и c.lower() et c. имеет смысл, как и умножение на число i.

Если вы используете c, i для распаковки, значение c будет 0, а значение i будет 'h' и c.lower() больше не существует, поскольку c - это число, а i - это строка.

...