копируйте каждого участника в списке - Python

Иногда я использую следующее обходное решение с временной строкой-заполнителем:

var variable1 = "someString";
$('#demo').load(
    "{{ url_for('addshare2', share='ADDSHARE2') }}".replace("ADDSHARE2", variable1)
);

Это не совсем правильно, и я все еще ищу лучшее решение. Но он выполняет эту работу.

31
задан SilentGhost 15 March 2010 в 17:28
поделиться

6 ответов

>>> a = range(10)
>>> [val for val in a for _ in (0, 1)]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]

N.B. _ традиционно используется в качестве имени переменной-заполнителя, когда вы не хотите ничего делать с содержимым переменной. В этом случае он просто используется для генерации двух значений каждый раз во внешнем цикле.

Чтобы превратить это из списка в генератор, замените квадратные скобки круглыми скобками.

53
ответ дан Dave Kirby 27 November 2019 в 21:36
поделиться

Если у вас уже есть рецепт roundrobin, описанный в документации для itertools - и это очень удобно - тогда вы можете просто использовать

roundrobin(my_list, my_list)
9
ответ дан Hank Gay 27 November 2019 в 21:36
поделиться

Поскольку Гвидо не нравится функциональные операторы, они могут быть чертовски удобными:

>>> from operator import add
>>> a = range(10)
>>> b = reduce(add, [(x,x) for x in a])
1
ответ дан Kirk Strauser 27 November 2019 в 21:36
поделиться

Я бы использовал zip и itertools.chain .

>>> import itertools
>>> l = [1,5,3,6,16]
>>> list(itertools.chain(*zip(l,l)))
[1, 1, 5, 5, 3, 3, 6, 6, 16, 16]

Примечание: я использовал только список , чтобы использовать генератор, чтобы сделать его пригодным для печати. Возможно, вам не нужен вызов list в вашем коде ...

9
ответ дан 27 November 2019 в 21:36
поделиться

Я бы использовал

import itertools
foo = [1, 5, 3, 6]
new = itertools.chain.from_iterable([item, item] for item in foo)

new будет итератором, который лениво перебирает повторяющиеся элементы. Если вам нужно вычислить фактический список, вы можете выполнить list (new) или использовать одно из других решений.

2
ответ дан 27 November 2019 в 21:36
поделиться
>>> a = [1, 2, 3]
>>> b = []
>>> for i in a:
    b.extend([i, i])


>>> b
[1, 1, 2, 2, 3, 3]

или

>>> [a[i//2] for i in range(len(a)*2)]
[1, 1, 2, 2, 3, 3]
13
ответ дан 27 November 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: