2011-09-05 67 views
26

Tôi có hai danh sách:python: tạo danh sách các hàng từ danh sách

x = ['1', '2', '3'] 
y = ['a', 'b', 'c'] 

và tôi cần phải tạo ra một danh sách các hàng từ các danh sách này, như sau:

z = [('1','a'), ('2','b'), ('3','c')] 

Tôi đã cố gắng làm việc đó như thế này:

z = [ (a,b) for a in x for b in y ] 

nhưng kết quả là:

[('1', '1'), ('1', '2'), ('1', '3'), ('2', '1'), ('2', '2'), ('2', '3'), ('3', '1'), ('3', '2'), ('3', '3')] 

tức là danh sách các bộ gồm mọi phần tử trong x với mọi phần tử trong y ... cách tiếp cận đúng để làm những gì tôi muốn làm là gì? cảm ơn bạn ...

EDIT: Hai bản sao khác được đề cập trước khi chỉnh sửa là lỗi của tôi, thụt vào nó trong một cho vòng lặp do nhầm lẫn ...

+3

Câu hỏi này đã được hỏi: http://stackoverflow.com/questions/2407398/python-merge-items-of-two-lists-into- a-list-of-tuples – mwan

+0

Mea Culpa, không thể tìm thấy điều đó trong tìm kiếm, cảm ơn bạn :) – amyassin

Trả lời

38

Sử dụng chức năng được xây dựng trong zip():

z = zip(x,y) 
10

Bạn đang tìm kiếm chức năng zip builtin. Từ tài liệu:

>>> x = [1, 2, 3] 
>>> y = [4, 5, 6] 
>>> zipped = zip(x, y) 
>>> zipped 
[(1, 4), (2, 5), (3, 6)] 
Các vấn đề liên quan