在Python中以固定宽度打印列表
这是一个快速且希望简单的问题。
假设我有一个变量,它的值是一个数字,表示宽度。
比如说: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