2016-02-17 1 views
1

Я хотел бы, чтобы однострочный способ присвоения двух переменных двум различным значениям в одной строке для цикла.несколько назначений в одной строке для цикла python

У меня есть список из списка элементов

list_values = [[1, 2, 3], [4, 5, 6]] 

я пытался это сделать, и он работает, но не pythony я чувствую это сделать:

first = [i[0] for i in list_values] 
second = [i[1] for i in list_values] 

Что делает:

first = [1, 4] 
second = [2, 5] 

I хочу написать что-то наподобие:

first, second = [i[0]; i[1] for i in list_values] 

Возможно ли это?

ответ

2

Вы могли бы использовать вместо zip() function:

first, second = zip(*list_values)[:2] 

или Python 3 эквивалент:

from itertools import islice 

first, second = islice(zip(*list_values), 2) 

zip() пар до элементов из входных списков в последовательности новых кортежей; вам нужны только первые два, поэтому вы нарезаете результат.

+0

Thats it !! Спасибо :) – amc