Конвертировать списки в «транспонированный» список

Вероятно, это вопрос для начинающих, но я не знаю, как искать ответ (потому что я не могу «назвать» вопрос)

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

xxx = ["time1", "time2", "time3"]
yyy = ["value1", "value2", "value3"]
zzz=(xxx,yyy)

Теперь я хотел бы создать список / кортеж для каждой записи результат должен быть

[['time1', 'value1'], ['time2', 'value2'], ['time3', 'value3']]

Я могу сделать это с помощью цикла for (и zip), но нет более «хорошего» решение? Вотаналогичный вопрос но я не могу использовать приведенное там разрешение для своих проблем

 Karl Knechtel06 сент. 2012 г., 16:10
"Я могу сделать это с помощью цикла for (и zip), но нет" более хорошего " ? Решение & Quot; - Что "не приятно"? околоzip?
 nobs06 сент. 2012 г., 16:14
Как я могу преобразовать результат zip в новый список? потому что zip возвращает «повторяемый объект»
 mgilson06 сент. 2012 г., 16:17
@nobs - я обновился теперь, когда вижу, что вы работаете с python 3.

Ответы на вопрос(2)

что ваши данные включают отметки времени и цифры. Если вы выполняете вычисления с интенсивным числом, то стоит посмотреть на массивные массивы. Они предлагают лучшую производительность, а транспонирование очень просто. (arrayname.transpose() или дажеarrayname.T )

 nobs06 сент. 2012 г., 22:43
Вы правы, но это ответ, который я получаю от вызова c-dll, и мне нужно изменить данные на что-то более "управляемое" также это лишь некоторая тестовая функция, так что скорость в настоящее время не имеет значения (но я использую python для проверки скорости CDLL :-))
Решение Вопроса

Используйте встроенныйzip функция:

 zzz = zip(xxx, yyy) 

Конечно, это создает список кортежей (или итерируемый кортеж в python3.x). Если вы действительно хотите список списков:

 #list (python2.x) or iterable(python3.x) of lists
 zzz = map(list,zip(xxx,yyy)) 

или же

 #list of lists, not list of tuples
 #python 2.x and python 3.x
 zzz = [ list(x) for x in zip(xxx,yyy) ]

Если вы используете python3.x и хотите убедиться, чтоzzz это список, решение для обработки списка будет работать, или вы можете создать список из итерируемойzip производит:

#list of tuples in python3.x.  
zzz = list(zip(xxx,yyy)) #equivalent to zip(xxx,yyy) in python2.x
                         #will work in python2.x, but will make an extra copy.
                         # which will be available for garbage collection
                         # immediately
 nobs06 сент. 2012 г., 16:35
спасибо за помощь
 06 сент. 2012 г., 16:19
list(zip(...)) соответствует требованиям, если вы не возражаете против ненужной копии в 2.7.
 06 сент. 2012 г., 16:24
@nobs - одно из приведенных выше решений должно работать для вас. Если вам нужен список списков, а не список кортежей, понимание списка, вероятно, является вашим лучшим выбором. Если список кортежей в порядке, тоlist(zip(...)) будет работать в обоих случаях.
 nobs06 сент. 2012 г., 16:18
спасибо за быстрый ответ, он должен работать в Python 2.7 и 3.x, поэтому я должен использовать & quot; generic & quot; подход

Ваш ответ на вопрос