我有一個清單
list = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 39, 44, 42, 40, 43, 47, 45, 57, 52, 75, 73, 86, 78, 70, 77, 87, 79, 113, 96, 147, 141, 170, 150, 130, 145, 167, 147, 225, 184]
我試圖讓它水平回傳 4 列
21 22 23 24
25 26 27 28
29 30 39 39
44 42 40 43
...
以及垂直
21 39 75 147
22 39 73 141
23 44 86 170
24 42 78 150
25 40 70 130
26 43 77 145
27 47 87 167
28 45 79 147
29 57 113 225
30 52 96 184
這是我嘗試橫向解決這個問題:
# prints array in columns
def printArray(array):
row = 10
col = 4
for i in range(row):
for j in range(col):
print(array[i][j], '\t', end="")
但它不起作用。
我也嘗試過搜索如何以某種方式轉置串列,但只找到了如何轉置串列串列。
轉置串列串列
任何幫助將不勝感激,謝謝。
uj5u.com熱心網友回復:
對于水平,您可以使用np.reshape:
np.array(list).reshape(-1, 4)
對于垂直,您可以轉置:
np.array(list).reshape(4, -1).T
uj5u.com熱心網友回復:
你可以做range
垂直的
col = 4
vertical = [lst[i:i col] for i in range(0,len(lst),col)]
for item in vertical:
print(item)
輸出:
[21, 22, 23, 24]
[25, 26, 27, 28]
[29, 30, 39, 39]
[44, 42, 40, 43]
[47, 45, 57, 52]
[75, 73, 86, 78]
[70, 77, 87, 79]
[113, 96, 147, 141]
[170, 150, 130, 145]
[167, 147, 225, 184]
水平的
row = 10
for s in range(row):
print([lst[s:][i] for i in range(0,len(lst),row)])
輸出:
[21, 39, 75, 147]
[22, 39, 73, 141]
[23, 44, 86, 170]
[24, 42, 78, 150]
[25, 40, 70, 130]
[26, 43, 77, 145]
[27, 47, 87, 167]
[28, 45, 79, 147]
[29, 57, 113, 225]
[30, 52, 96, 184]
一起變成一個函式。
def printarray(row, col):
print('----Vertical print----')
vertical = [lst[i:i col] for i in range(0,len(lst),col)]
for item in vertical:
print(item)
print('\n')
print('----Horizontal print----')
for s in range(row):
print([lst[s:][i] for i in range(0,len(lst),row)])
uj5u.com熱心網友回復:
這里有 2 個列印兩個方向的函式。
水平輸出:
21 22 23 24
25 26 27 28
29 30 39 39
44 42 40 43
47 45 57 52
75 73 86 78
70 77 87 79
113 96 147 141
170 150 130 145
167 147 225 184
垂直輸出:
21 39 75 147
22 39 73 141
23 44 86 170
24 42 78 150
25 40 70 130
26 43 77 145
27 47 87 167
28 45 79 147
29 57 113 225
30 52 96 184
代碼:
data = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 39, 44, 42, 40, 43, 47, 45, 57, 52, 75, 73, 86, 78, 70, 77, 87, 79, 113, 96, 147, 141, 170, 150, 130, 145, 167, 147, 225, 184]
def print_horizontaly(lst: list, columns, spacing):
for i, item in enumerate(lst):
if i % columns == 0:
print("")
print(item, end=''.join(' ' for j in range(spacing - len(str(item)))))
def print_verticaly(lst: list, columns, spacing):
columns_ = []
for i in range(len(lst)//columns):
for item in lst[i::len(lst)//columns]:
print(item, end=''.join(' ' for j in range(spacing - len(str(item)))))
print("")
print_horizontaly(data, 4, 8)
print_verticaly(data, 4, 8)
uj5u.com熱心網友回復:
這個怎么樣 ?
list = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 39, 44, 42, 40, 43, 47, 45, 57, 52, 75, 73, 86, 78, 70, 77, 87, 79, 113, 96, 147, 141, 170, 150, 130, 145, 167, 147, 225, 184]
x = np.array(list) # Change list to 1D numpy matrix
x = x.reshape(int(len(x)/4), 4) # Reshape the matrix according to our requirement
uj5u.com熱心網友回復:
如果你使用 numpy 庫,很容易重塑串列。
要制作垂直整形陣列,只需先將陣列制作為 4 行 10 列,然后使用 numpy 函式轉置陣列。
import numpy as np
target_list = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 39, 44, 42, 40, 43, 47, 45, 57, 52, 75, 73, 86, 78, 70, 77, 87, 79, 113, 96, 147, 141, 170, 150, 130, 145, 167, 147, 225, 184]
# for horizontally
h_array = np.array(target_list).reshape((10, 4))
print(h_array)
# for vertically
v_array = np.array(target_list).reshape((4, 10))
print(v_array.T)
如果要將陣列作為串列串列,則可以使用 tolist 函式。
h_list = h_array.tolist()
print(h_list)
v_list = v_array.T.tolist()
print(v_list)
uj5u.com熱心網友回復:
嘗試這樣做:
def printArray(array):
row = 10
col = 4
#Horizontally
print("Horizontally:\n")
for i in range(0,len(array)-col,col):
for j in range(i,i col):
print(array[j], '\t', end="")
print()
print()
print("Vertically:\n")
#Vertically
for i in range(0,row):
for j in range(i,i 10*4,row):
print(array[j], '\t', end="")
print()
lst = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 39, 44, 42, 40, 43, 47, 45, 57, 52, 75, 73, 86, 78, 70, 77, 87, 79, 113, 96, 147, 141, 170, 150, 130, 145, 167, 147, 225, 184]
printArray(lst)
輸出:
Horizontally:
21 22 23 24
25 26 27 28
29 30 39 39
44 42 40 43
47 45 57 52
75 73 86 78
70 77 87 79
113 96 147 141
170 150 130 145
Vertically:
21 39 75 147
22 39 73 141
23 44 86 170
24 42 78 150
25 40 70 130
26 43 77 145
27 47 87 167
28 45 79 147
29 57 113 225
30 52 96 184
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515909.html
標籤:Python列表多列转置
