在Python中以固定宽度打印列表

0 投票
1 回答
2145 浏览
提问于 2025-04-17 02:03

这是一个快速且希望简单的问题。

假设我有一个变量,它的值是一个数字,表示宽度。

比如说:size_x = 50

我想打印一个列表,限制在50个元素的宽度内。该怎么做呢?

1 个回答

4

猜测 1: 打印出原始列表中只包含 size_x 个元素的行

for i in range(len(mylist)/size_x):
    print(mylist[i*size_x:(i+1)*size_x])

猜测 2: 创建一个新列表,里面的元素是只有 size_x 个字符的字符串

newlist = []
for i in range(len(mylist)/size_x):
    newlist.append(''.join(mylist[i*size_x:(i+1)*size_x]))

一次性把'猜测 2'的新列表打印到屏幕上比第一种猜测要快:

print('\n'.join(newlist))

(另外要注意,在 Python 3 之前,可以用 xrange() 来代替 range(),因为 xrange() 是边生成值边使用,而不是先生成一个完整的索引列表。Python 3 默认使用 range() 这种方式)

例子

mylist = list('hello this is supposed to be a long line')
size_x=5
for i in range(len(mylist)/size_x):
    print(mylist[i*size_x:(i+1)*size_x])

['h', 'e', 'l', 'l', 'o']
[' ', 't', 'h', 'i', 's']
[' ', 'i', 's', ' ', 's']
['u', 'p', 'p', 'o', 's']
['e', 'd', ' ', 't', 'o']
[' ', 'b', 'e', ' ', 'a']
[' ', 'l', 'o', 'n', 'g']
[' ', 'l', 'i', 'n', 'e']

newlist = []
for i in range(len(mylist)/size_x):
    newlist.append(''.join(mylist[i*size_x:(i+1)*size_x]))
print('\n'.join(newlist))

hello
 this
 is s
uppos
ed to
 be a
 long
 line

撰写回答