Hướng dẫn how to print a list vertically in python - cách in danh sách theo chiều dọc trong python

Đố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

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 
0

Mã 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 
1

Answer:

Đ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 
2

Bạ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 
4

Nhữ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!

Làm cách nào để in một danh sách cột trong Python?

Để in một danh sách trong các cột: Sử dụng hàm zip () để lấy một đối tượng zip của Tuples. Sử dụng một chuỗi được định dạng để định dạng các mục trong mỗi tuple trong một hàng. Sử dụng hàm in () để in kết quả.Use the zip() function to get a zip object of tuples. Use a formatted string literal to format the items in each tuple in a row. Use the print() function to print the result.

Làm cách nào để in một danh sách cạnh nhau trong Python?

Bạn có thể sử dụng hàm zip () để kết hợp các danh sách với nhau. Hàm zip () sẽ lặp lại các bộ dữ liệu với các phần tử tương ứng từ mỗi danh sách, sau đó bạn có thể định dạng như Michael Butscher đề xuất trong các bình luận. Cuối cùng, chỉ cần tham gia () chúng cùng với Newlines và bạn có chuỗi bạn muốn.use the zip() function to join lists together. The zip() function will iterate tuples with the corresponding elements from each of the lists, which you can then format as Michael Butscher suggested in the comments. Finally, just join() them together with newlines and you have the string you want.

Làm cách nào để in danh sách như một chuỗi trong Python?

Để chuyển đổi danh sách thành một chuỗi, hãy sử dụng khả năng hiểu danh sách Python và hàm tham gia ().Sự hiểu biết danh sách sẽ đi qua từng phần tử một và phương thức tham gia () sẽ kết hợp các phần tử của danh sách thành một chuỗi mới và trả về nó làm đầu ra.use Python List Comprehension and the join() function. The list comprehension will traverse the elements one by one, and the join() method will concatenate the list's elements into a new string and return it as output.

Làm thế nào để bạn in một danh sách đầy đủ trong Python?

Sử dụng biểu tượng * để in một danh sách trong Python.Để in nội dung của một danh sách trong một dòng duy nhất với không gian, toán tử * hoặc splat là một cách để đi.Nó chuyển tất cả các nội dung của một danh sách cho một hàm.Chúng ta có thể in tất cả các phần tử trong các dòng mới hoặc được phân tách bằng không gian và để làm điều đó, chúng ta sử dụng sep =, \ n, hoặc sep =, tương ứng.* or splat operator is one way to go. It passes all of the contents of a list to a function. We can print all elements in new lines or separated by space and to do that, we use sep=”\n” or sep=”, ” respectively.