как получить кортежи из списков, используя понимание списка в python

У меня есть два списка и вы хотите объединить их в один список tuples . Я хочу сделать это со list comprehension , я могу заставить его работать с помощью map . но было бы неплохо узнать, как это будет выглядеть здесь. код здесь

 >>> lst = [1,2,3,4,5] >>> lst2 = [6,7,8,9,10] >>> tup = map(None,lst,lst2) # works fine >>> tup [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)] >>> l3 = [lst, lst2] >>> l3 [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]] >>> zip(*l3) # works fine [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)] >>> [(i,j) for i in lst and for j in lst2] # does not work File "<stdin>", line 1 [(i,j) for i in lst and for j in lst2] ^ SyntaxError: invalid syntax >>> 

Я написал комментарии, где он работает, а где нет. Как можно связать два for-loop в list comprehension

2 Solutions collect form web for “как получить кортежи из списков, используя понимание списка в python”

Подумайте о том, как понимать списки как циклы. Как вы можете написать 2 не вложенных цикла?

Вы можете сделать это с несколько более странным пониманием списка:

 [(x, lst2[i]) for i, x in enumerate(lst)] 

или

 [(lst[i], lst2[i]) for i in xrange(len(lst))] 

Но на самом деле лучше использовать zip .

Способ понимания списка является глупым, потому что он просто обертывает понимание списка «ничего-ничего» в zip :

 [(i,j) for i, j in zip(lst, lst2)] 

Просто используйте zip , для чего это нужно. Нет смысла заставлять себя использовать списки, когда они ничего не выполняют.

Изменить: если ваш вопрос: «Как мне получить два для циклов в одном понимании списка», вы должны спросить об этом. Ответ: «Вы не можете получить два PARALLEL for циклов в одном понимании списка». Каждый раз, когда вы кладете два предложения для определения списка, они будут вложенными. Это, понимание списка, как это:

 [... for a in list1 for b in list2] 

Работает как два вложенных цикла:

 for a in list1: for b in list2: ... 

Вы не можете написать понимание списка, которое делает следующее:

 for a in list1: ... for b in list2: ... 

, , , и вам это не нужно, потому что вместо этого у вас есть функция zip .

(Вы можете подделать его с помощью решения, такого как @Roman Pekar, но на самом деле это не делает два цикла, он просто делает это и использует значения из этого, чтобы попасть в другой список.)

  • Значения Python для нескольких списков в одном понимании списка
  • Как получить значение индекса для понимания списка?
  • Учет списков в Python: установите все элементы в массиве в 0 или 1
  • Автоматическое упрощение / рефакторинг кода Python (например, для циклов -> понимание списка)?
  • Python - поиск инкрементных нумерованных последовательностей с пониманием списка
  • Pythonic способ распечатать элементы списка
  • Python - понимание слов для слов, которые состоят не только из цифр
  • Транспонирование матрицы в Python
  • Python - лучший язык программирования в мире.