我有两个列表,分别命名为result和p_results。我想在表中显示这些列表值,例如if
results = [1,2,3,4]
p_results = [5,6,7,8]
我想要这样的东西
1 5
2 6
3 7
4 8
print('{:3}{:20}'.format(results, p_results))
运行代码:
runfile('D:/4/2d.py', wdir='D:/4')
Traceback (most recent call last):
File "<ipython-input-59-1abb0c96f0c0>", line 1, in <module>
runfile('D:/4/2d.py', wdir='D:/4')
File "C:\Users\Rabinsen\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
execfile(filename, namespace)
File "C:\Users\Rabinsen\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "D:/4/2d.py", line 61, in <module>
print('{:3}{:20}'.format(results, p_results))
TypeError: unsupported format string passed to list.__format__
答案 0 :(得分:2)
您可以将list
类型传递给format
(仅使用{}
),但是您要求的格式不可用。而且标准格式也不适合,所以...
您想要的是将每个列表放在一个单独的列上。您必须将zip
一起列出,然后迭代结果以将其传递给格式:
results = [1,2,3,4]
p_results = [5,6,7,8]
for result,p_result in zip(results,p_results):
print('{:3}{:20}'.format(result,p_result))
打印类似:
1 5
2 6
3 7
4 8
答案 1 :(得分:1)
如果你仍然想用一行来做,写:
results = [1,2,3,4]
p_results = [5,6,7,8]
[print("{:3}{:20}".format(*x)) for x in np.c_[results,p_results]][0]
打印:
1 5
2 6
3 7
4 8
可以肯定的是,np 适用于 NumPy
答案 2 :(得分:0)
您尝试过print('{},{}'.format(results[:3], p_results[:20]))
print
的结构看起来像是两种样式的组合,
print(f'{results[:3]}, {p_results[:20]}')
和
print('{}, {}'.format(results[:3], p_results[:20]))
您的尝试是
print('{:3}, {:20}'.format(results, p_results))
这是您错误的根源,在此示例中重现了相同的错误:
>>> a = [1, 2, 3]
>>> print('{:1}'.format(a))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported format string passed to list.__format__
>>> print('{}'.format(a[:1]))
[1]
答案 3 :(得分:0)
我建议您为此使用熊猫库
import pandas as pd
results = [1,2,3,4]
p_results = [5,6,7,8]
d = {'column-1':results, 'column-2':p_results}
data_frame = pd.DataFrame(data=d)
print(data_frame)
column-1 column-2
0 1 5
1 2 6
2 3 7
3 4 8
请注意,您具有使用数据框对象
的索引您还可以使新列成为一种操作,例如 让我们创建第三列以存储列1和列2的乘积
data_frame['product'] = data_frame['column-1']*data_frame['column-2']
您现在得到的打印结果是:
column-1 column-2 product
0 1 5 5
1 2 6 12
2 3 7 21
3 4 8 32
希望这会有所帮助! 编码愉快!
答案 4 :(得分:0)
一个技巧是解决这个问题:
'{:15}'.format('{}'.format([1,2,3]))
答案 5 :(得分:0)
基于@istvan 解决方案,只需用 str
包装您的列表:
f'{str(my_list):15}{str(my_other_list):25}'
(或者如果你坚持@istvan 的例子:)
'{:15}'.format(str([1,2,3]))
# or
f'{str([1,2,3]):15}'