Как использовать + = (Добавить И) с пониманием списка

1

Я пытаюсь выяснить, как использовать приведенный ниже код со списком.

link = 'page={}&index={}'
index = 10
links = []
for page in range(2, 4):
    links.append(link.format(page, index))
    index += 10

Я пробовал много разных способов и Googled как можно больше (возможно, я не ищу правильные условия?). Я все еще не могу понять это. Ниже приведен один из способов, которым я пытался, но я получаю ошибку SyntaxError.

link = 'page={}&index={}'
index = 10
links = [link.format(link, index) for page in range(2, 4) index += 10]

Это должно быть результатом понимания списка:

['page=2&index=10', 'page=3&index=20']

Если у кого-то есть какие-то идеи, это было бы очень полезно. Спасибо!

Теги:
python-3.x

2 ответа

4

Вы можете использовать функцию enumerate: builtin для увеличения index:

>>> [link.format(page, i*10) for i, page in enumerate(range(2, 4), start=1)]
['page=2&index=10', 'page=3&index=20']

Это также будет работать с любым другим итерабельным, а не только с range(2, 4), например, списком строк. Таким образом, любой такой итерабельный может быть дополнен переменной счетчика, например index в вашем примере.

  • 1
    enumerate здесь излишне, учитывая, что i == page - 1
  • 1
    @chepner Хорошо, да, но это более широко применимо. Вместо range(2, 4) вы можете иметь диапазон с шагами или просто любой итеративный.
3

Вы не можете использовать выражения + = (или любое утверждение, если на то пошло) в понимании списка. В вашем случае используйте zip и itertools.count:

import itertools
[link.format(page, index) for page, index in zip(range(2, 4), itertools.count(10, 10))]
  • 0
    да, что сказал Чепнер (почти) [link.format(page, 10*(page-1)) for page in range(2, 4)]
  • 2
    (Я удалил свой комментарий, когда заметил, что отношения между страницей и ссылкой не совсем правильные; хотя Крис понял это.)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню