gpt4 book ai didi

python - 将 n 个列表压缩在一起

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:51 24 4
gpt4 key购买 nike

我试图在垂直排序的列中显示一个列表,列数由用户决定。我想使用 zip() 但我似乎不知道如何告诉它遍历 n 列表。

#!/usr/bin/env python

import random

lst = random.sample(range(100), 30)
lst = sorted(lst)

col_size = int(raw_input('How many columns do you want?: '))
sorting = 'Vertical'

if sorting == 'Vertical':
# vertically sorted
columns = []
n = len(lst)//col_size

for i in range(0, len(lst), n):
columns.append(lst[i:i+n])

print '\nVertically Sorted:'

print columns
print zip(*columns)

这给出了这个结果:

How many columns do you want?: 4

Vertically Sorted:
[[0, 2, 4, 11, 12, 16, 23], [24, 31, 32, 36, 41, 48, 50], [52, 54, 61, 62, 63, 64, 67], [76, 80, 81, 89, 91, 92, 94], [96, 97]]
[(0, 24, 52, 76, 96), (2, 31, 54, 80, 97)]

如果我知道列数(例如 4),我可以编码:

for c1, c2, c3, c4 in zip(columns[0], columns[1], columns[2], columns[3]):
print str(c1), str(c2).rjust(8), str(c3).rjust(8), str(c4).rjust(8)

但是既然我不会,我该如何使用zip?正如您所看到的,我尝试了 zip(*columns) 但由于编号不相等而失败。最后一个列表中的项目数。

最佳答案

Zip 不会执行您想要的操作,因为行的大小不同。当行不均匀时, map 将转置。

请参阅以下代码帮助 Create nice column output in python .

程序

随机导入

lst = random.sample(范围(100), 30)lst = 已排序(lst)

col_size = int(raw_input('你想要多少列?: '))排序='垂直'

如果排序==“垂直”: # 垂直排序 列= [] n = len(lst)//col_size

for i in range(0, len(lst), n):
columns.append(lst[i:i+n])

print '\nColumns:'
columns = map(None,*columns)
print columns
print '\nVertically Sorted:'

col_width = max(len(str(word)) for row in columns for word in row) + 2 # padding
for row in columns:
print "".join(str(word).ljust(col_width) for word in row if word is not None)

输出

How many columns do you want?: 4

Columns:
[(0, 19, 45, 62, 92), (1, 24, 47, 64, 93), (5, 29, 48, 72, None), (6, 31, 50, 80, None), (9, 34, 56, 85, None), (14, 36, 58, 87, None), (15, 37, 61, 90, None)]

Vertically Sorted:
0 19 45 62 92
1 24 47 64 93
5 29 48 72
6 31 50 80
9 34 56 85
14 36 58 87
15 37 61 90

关于python - 将 n 个列表压缩在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17912894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com