2010-07-18 50 views
12

Làm cách nào để nối thêm nội dung của mỗi bộ dữ liệu sau đây (ví dụ, các phần tử trong danh sách) vào danh sách khác đã có 'thứ gì đó' trong đó? Vì vậy, tôi muốn thêm dòng sau vào một danh sách (ví dụ: kết quả []) mà không phải là rỗng:nối các bộ dữ liệu vào danh sách

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)] 

Rõ ràng, sau đây không làm điều:

for item in l: 
    result.append(item) 
    print result 

tôi muốn in:

[something, 'AAAA', 1.11] 
[something, 'BBB', 2.22] 
[something, 'CCCC', 3.33] 
+1

Bạn có muốn _all_ các tuples được nối thêm vào danh sách, một sau cái khác? Hoặc chỉ một lần tại một thời điểm? Nói cách khác, bạn đang tìm kiếm một danh sách chứa '[cái gì đó, tuple1, tuple2, tuple3]', hoặc một vài danh sách, '[cái gì đó, tuple1]', '[cái gì đó, tuple2]', và '[cái gì đó, tuple3] '? –

Trả lời

29
result.extend(item) 
+1

+1. Đây là phiên bản sạch nhất. – Skurmedel

+0

Tiện lợi, không biết 'mở rộng' sẽ xử lý tuple đúng cách. – John

+0

+1 Tôi thứ hai là "sạch" nhất. – Kit

2

Bạn có thể sử dụng inbuilt list() chức năng để chuyển đổi một tuple đến một lis t. Vì vậy, một phiên bản dễ dàng hơn là:

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)] 
result = [list(t) for t in l] 
print result 

Output:

[['AAAA', 1.1100000000000001], 
['BBB', 2.2200000000000002], 
['CCCC', 3.3300000000000001]] 
+0

tại sao tôi nhận được: TypeError: đối tượng 'tuple' không thể gọi được? – DGT

+0

@ DGT không có ý tưởng. bạn đang dùng phiên bản python nào? Ở trên là tốt trong 2.6/2.7. – cletus

+0

@DGT: Có thể bạn đang bỏ qua dấu phẩy sau một bộ dữ liệu. Một cái gì đó như (a, b, c) (d, e, f) sẽ tạo ra lỗi đó. Phiên bản cố định sẽ là (a, b, c), (d, e, f) –

-1

Bạn sẽ cần phải giải nén các tuple để thêm các yếu tố cá nhân của mình. Như thế này:

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)] 

for each_tuple in l: 
    result = ['something'] 
    for each_item in each_tuple: 
    result.append(each_item) 
    print result 

Bạn sẽ có được điều này:

['something', 'AAAA', 1.1100000000000001] 
['something', 'BBB', 2.2200000000000002] 
['something', 'CCCC', 3.3300000000000001] 

Bạn sẽ cần phải làm một số xử lý trên các giá trị số để chúng hiển thị một cách chính xác, nhưng đó sẽ là một câu hỏi khác.

+1

Không, không phải điều này. –

+0

Không, không phải điều này. Nhưng đây là người duy nhất ít nhất đã xoay sở để đọc câu hỏi cho đến cuối cùng. – Slava

3

Bạn có thể chuyển đổi một tuple vào một danh sách một cách dễ dàng:

>>> t = ('AAA', 1.11) 
>>> list(t) 
['AAAA', 1.11] 

Và sau đó bạn có thể nối danh sách với extend:

>>> t = ('AAA', 1.11) 
>>> result = ['something'] 
>>> result.extend(list(t)) 
['something', 'AAA', 1.11]) 
+0

+1 Tôi không biết về 'extend()' :) – Kit

Các vấn đề liên quan