10
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Giả sử tôi có 3 danh sách như thế này
l1 = [1,2,3]
l2 = [4,5,6]
l3 = [7,8,9]
Làm thế nào để tôi có thể in ra mọi thứ từ các danh sách này cùng một lúc? Cách pythonic để làm điều gì đó như vậy là gì?
for f in l1,l2 and l3:
print f
Điều này dường như chỉ tính đến 2 danh sách vào tài khoản.
Đầu ra mong muốn: Đối với mỗi phần tử trong tất cả các danh sách, tôi đang in chúng ra bằng một chức năng khác nhau
def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
và tôi gọi hàm trên bên trong vòng lặp cho.
Hỏi ngày 20 tháng 8 năm 2012 lúc 15:52Aug 20, 2012 at 15:52
Cyberbemoncyberbemoncyberbemon
2.89011 Huy hiệu vàng36 Huy hiệu bạc62 Huy hiệu Đồng11 gold badges36 silver badges62 bronze badges
5
Tôi nghĩ bạn có thể muốn
for f in l1,l2 and l3:
print f
5:for x,y,z in zip[l1,l2,l3]:
print x,y,z #1 4 7
#2 5 8
#3 6 9
Bạn đang làm gì vậy:
for f in l1,l2 and l3:
là một chút lạ. Về cơ bản, nó tương đương với
for f in l1,l2 and l3:
print f
6 kể từ khi for f in l1,l2 and l3:
print f
7 trả về for f in l1,l2 and l3:
print f
8 [giả sử rằng for f in l1,l2 and l3:
print f
9 và for f in l1,l2 and l3:
print f
8 đều không trống-nếu không, nó sẽ trả về cái trống.]Nếu bạn chỉ muốn in từng danh sách liên tiếp, bạn có thể làm:
for lst in [l1,l2,l3]: #parenthesis unnecessary, but I like them...
print lst #[ 1, 2, 3 ]
#[ 4, 5, 6 ]
#[ 7, 8, 9 ]
Đã trả lời ngày 20 tháng 8 năm 2012 lúc 15:54Aug 20, 2012 at 15:54
Mgilsonmgilsonmgilson
289K60 Huy hiệu vàng607 Huy hiệu bạc676 Huy hiệu Đồng60 gold badges607 silver badges676 bronze badges
3
Không cần sử dụng
for f in l1,l2 and l3:
print f
5, chỉ cần thêm chúng với nhau bằng toán tử def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
2. def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
3 Tạo một danh sách mới là sự kết hợp của def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
4, for f in l1,l2 and l3:
print f
9 và for f in l1,l2 and l3:
print f
8 để bạn có thể chỉ cần lặp qua đó, như vậy:for f in l1+l2+l3:
print[f]
Việc bạn sử dụng toán tử
def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
7 không chính xác. Một lý do khác tại sao mã của bạn không hoạt động là sử dụng dấu phẩy [như def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
8] tạo ra một tuple, đây là một thùng chứa hiện đang giữ 3 danh sách của bạn. Vì vậy, khi bạn cố gắng lặp qua def print_row[filename, status, Binary_Type]:
print " %-45s %-15s %25s " % [filename, status, Binary_Type]
8, nó sẽ lặp qua mọi yếu tố trong bộ điều đó [là danh sách] chứ không phải thông qua mọi yếu tố trong danh sách như bạn dự định.Đã trả lời ngày 20 tháng 8 năm 2012 lúc 15:55Aug 20, 2012 at 15:55
LanarulanaruLanaru
8.9627 Huy hiệu vàng33 Huy hiệu bạc62 Huy hiệu Đồng7 gold badges33 silver badges62 bronze badges
Nếu bạn muốn in
1 4 7
2 5 8
3 6 9
Do:
for i,j,k in zip[l1,l2,l3]:
print i,j,k
Đã trả lời ngày 20 tháng 8 năm 2012 lúc 15:56Aug 20, 2012 at 15:56
inspectorG4dgetinspectorG4dgetinspectorG4dget
106K25 Huy hiệu vàng138 Huy hiệu bạc236 Huy hiệu Đồng25 gold badges138 silver badges236 bronze badges
Nó phụ thuộc vào những gì bạn muốn đạt được,
>>> #Given
>>> l1,l2,l3 = [1,2,3],[4,5,6],[7,8,9]
>>> #To print row wise
>>> import itertools
>>> for f in itertools.chain[l1,l2,l3]:
print[f,end=" "]
1 2 3 4 5 6 7 8 9
>>> #To print column wise
>>> for f in itertools.izip[l1,l2,l3]:
print[*f,end=" "]
1 4 7 2 5 8 3 6 9
>>>
hoặc triển khai sau đây sẽ hoạt động trong Python 2.7
for f in l1,l2 and l3:
print f
0Đã trả lời ngày 20 tháng 8 năm 2012 lúc 16:09Aug 20, 2012 at 16:09
AbhijitabhijitAbhijit
60.2K18 Huy hiệu vàng127 Huy hiệu bạc198 Huy hiệu đồng18 gold badges127 silver badges198 bronze badges
Danh sách của bạn không phải là cùng một độ dài, thường tốt hơn là sử dụng
for x,y,z in zip[l1,l2,l3]:
print x,y,z #1 4 7
#2 5 8
#3 6 9
0:for f in l1,l2 and l3:
print f
1Đã trả lời ngày 20 tháng 8 năm 2012 lúc 16:06Aug 20, 2012 at 16:06
Charles Beattiecharles BeattieCharles Beattie
5.5871 Huy hiệu vàng29 Huy hiệu bạc32 Huy hiệu đồng1 gold badge29 silver badges32 bronze badges
1
Để mở rộng trên câu trả lời của Abhijit, bạn có thể sử dụng Trình tạo itertools làm điều có thể hiểu được trong một danh sách hiểu.
for f in l1,l2 and l3:
print f
2Đã trả lời ngày 20 tháng 8 năm 2012 lúc 17:39Aug 20, 2012 at 17:39
DandanDan
1.1492 huy hiệu vàng10 Huy hiệu bạc18 Huy hiệu đồng2 gold badges10 silver badges18 bronze badges
Nếu bạn có nghĩa là bạn có 3 danh sách có độ dài bằng nhau và bạn muốn in nội dung của chúng dưới dạng 3 cột, thì làm thế nào về zip [] để kết nối các cột và danh sách hiểu để in [] trên mỗi lần lặp:
for f in l1,l2 and l3:
print f
3Trên đây sẽ in repr của Tuple [s]. Nếu bạn muốn định dạng các giá trị khác:
for f in l1,l2 and l3:
print f
4Không ai nói bạn phải sử dụng đầu ra của một danh sách hiểu.
Đã trả lời ngày 20 tháng 12 năm 2017 lúc 19:28Dec 20, 2017 at 19:28
Pourhauspourhauspourhaus
5176 Huy hiệu bạc9 Huy hiệu Đồng6 silver badges9 bronze badges