У меня есть список кортежей:2 элементов из списка кортежей
Items = [(4, 2), (1, 1), (2, 4), (8, 6), (11, 4), (10, 2), (7, 3), (6, 1)]
, и я хочу, чтобы получить его, как это в for
цикле:
NewItems = [[(4, 2), (1, 1)],
[(2, 4), (8, 6)],
[(11, 4), (10, 2)],
[(7, 3), (6, 1)]]
Я сделал это:
NewItems = []
while len(Items) > 0:
NewItems.append([Items[0], Items[1]])
del Items[0:2]
print NewItems
Я не думаю, что это лучший способ, так как я удаляю Items
переменных. Затем я попытался сделать это:
newList = iter(Items)
NewItems = []
for a, b in zip(newList, newList):
NewItems.append([a, b])
print NewItems
но это слияние кортежей.
Есть ли лучшее решение, которое может сделать то же самое?
Вы можете сделать список кортежей, как это, 'молнии (товары, товары [1:])' – Dharmik
Что случилось с ITER версии? Кажется, он генерирует желаемый результат. Очевидно, вам не нужен явный цикл for только для понимания списка 'NewItems = [list (x) для x в zip (newList, newList)]'. И если вы не против кортежей вместо списков, то еще проще: 'NewItems = list (zip (newList, newList))'. Версия iter позволяет избежать создания каких-либо промежуточных списков, поэтому мой предпочтительный подход. – AChampion
@AChampion да, это была моя ошибка, я должен просто использовать одну переменную из цикла и добавить ее в список. – Bear