Đối với một giải pháp chung, bạn có thể làm một cái gì đó dọc theo các dòng sau:
from itertools import zip_longest
lets = list['abcdefghijklmnop']
def table[it, rows]:
return zip_longest[*[it[i:i+rows] for i in range[0, len[it], rows]],
fillvalue=' ']
for t in table[lets, 6]:
print[*t]
Prints:
a g m
b h n
c i o
d j p
e k
f l
Vì chúng tôi đang sử dụng zip_longest [
a g m
b h n
c i o
d j p
e k
f l
5 cho Python 2], bạn có thể cung cấp một fillvalue và giá trị kết thúc lẻ sẽ không bị cắt ngắn.Nếu bạn muốn thay đổi các cột, hãy thay đổi số lượng hàng:
for t in table[lets, 2]:
print[*t]
Prints:
a c e g i k m o
b d f h j l n p
Tất nhiên, thật dễ dàng toán học để tìm ra mối quan hệ giữa COL và hàng nếu bạn có một danh sách X vật phẩm dài.
Vậy làm thế nào để làm việc này?
Theo định nghĩa, một bảng là một ma trận. Vì vậy, trước tiên, hãy tạo một ma trận dài
a g m
b h n
c i o
d j p
e k
f l
6:>>> lets
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
>>> rows=6
>>> [lets[i:i+rows] for i in range[0, len[lets], rows]]
[['a', 'b', 'c', 'd', 'e', 'f'], ['g', 'h', 'i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']]
Sau đó, đảo ngược ma trận đó:
>>> for t in zip_longest[*[lets[i:i+rows] for i in range[0, len[lets], rows]]]:
... print[t]
...
['a', 'g', 'm']
['b', 'h', 'n']
['c', 'i', 'o']
['d', 'j', 'p']
['e', 'k', None]
['f', 'l', None]
Và đi từ đó ...
Bản in của danh sách đã được xử lý nhiều lần. Nhưng đôi khi chúng ta cần một định dạng khác nhau để có được đầu ra của danh sách. Điều này cũng có một ứng dụng để đạt được chuyển vị ma trận. In danh sách dọc cũng có ứng dụng trong phát triển web. Hãy để thảo luận về một số cách mà nhiệm vụ này có thể được thực hiện.
Phương pháp số 1: Sử dụng a g m
b h n
c i o
d j p
e k
f l
7
a g m
b h n
c i o
d j p
e k
f l
Sử dụng hàm zip, chúng tôi ánh xạ các phần tử tại chỉ mục tương ứng với nhau và sau đó chúng tôi in từng phần tử. Điều này thực hiện công việc in dọc.
# Python3 code to demonstrate # Vertical list print # using zip[] # initializing list test_list = [[1, 4, 5], [4, 6, 8], [8, 3, 10]] # printing original list print ["The original list is : " + str[test_list]] # using zip[] # to print list vertically for x, y, z in zip[*test_list]: print[x, y, z]
Output:
The original list is : [[1, 4, 5], [4, 6, 8], [8, 3, 10]] 1 4 8 4 6 3 5 8 10
Phương pháp số 2: Sử dụng phương pháp ngây thơ
Phương pháp ngây thơ có thể được sử dụng để in danh sách vít theo chiều dọc. Sử dụng các vòng lặp và in từng mục chỉ mục trong mỗi danh sách liên tiếp sẽ giúp chúng tôi hoàn thành nhiệm vụ này.
# Python3 code to demonstrate # Vertical list print # using naive method # initializing list test_list = [[1, 4, 5], [4, 6, 8], [8, 3, 10]] # printing original list print ["The original list is : " + str[test_list]] # using naive method # to print list vertically for i in range[len[test_list]]: for x in test_list: print[x[i], end =’ ’] print[]
Output:
The original list is : [[1, 4, 5], [4, 6, 8], [8, 3, 10]] 1 4 8 4 6 3 5 8 10
Làm thế nào để hiển thị một danh sách theo chiều dọc?
Câu hỏi stackoverflow
Tôi có một danh sách các chữ cái và muốn có thể hiển thị chúng theo chiều dọc như vậy:
a g m
b h n
c i o
d j p
e k
f l
0Mã này chỉ hiển thị chúng như thế này:
a g m
b h n
c i o
d j p
e k
f l
1Answer:
Điều đó bởi vì bạn đã in chúng trong các dòng riêng biệt. Mặc dù bạn đã cung cấp cho chúng tôi đủ thông tin về cách bạn thực sự muốn in chúng, tôi có thể suy luận rằng bạn muốn nửa đầu trên cột đầu tiên và nửa thứ hai trên colum thứ hai.
Chà, điều đó không dễ, bạn cần phải suy nghĩ trước một chút và nhận ra rằng nếu bạn tính toán một nửa danh sách và giữ nó:
a g m
b h n
c i o
d j p
e k
f l
8 bạn có thể lặp lại với biến a g m
b h n
c i o
d j p
e k
f l
9 qua nửa đầu của danh sách và in trong cùng một dòng for t in table[lets, 2]:
print[*t]
0 và for t in table[lets, 2]:
print[*t]
1 đúng không? Một cái gì đó như thế này:a g m
b h n
c i o
d j p
e k
f l
2Bạn có thể dễ dàng khái quát nó cho các danh sách mà không có độ dài cặp, nhưng điều đó thực sự phụ thuộc vào những gì bạn muốn làm trong trường hợp đó.
Điều đó đang được nói, bằng cách sử dụng Python, bạn có thể đi xa hơn :]. Nhìn vào mã này:
a g m
b h n
c i o
d j p
e k
f l
3Điều này sẽ xuất hiện như sau trong Python 3:
a g m
b h n
c i o
d j p
e k
f l
4Những gì tôi vừa làm là hình thành các bộ dữ liệu với chức năng
for t in table[lets, 2]:
print[*t]
2 nhóm hai nửa của danh sách.Để hoàn thiện, nếu một ngày nào đó, danh sách của bạn không có độ dài cặp, bạn có thể sử dụng
for t in table[lets, 2]:
print[*t]
3 hoạt động ít nhiều giống như for t in table[lets, 2]:
print[*t]
2 nhưng lấp đầy với giá trị mặc định nếu cả hai lần lặp lại có cùng kích thước.Hi vọng điêu nay co ich!