Python将行列表转置为列列表

时间:2017-08-09 08:04:36

标签: python list numpy pyqt ipython

相对较新的python我有一个问题,我似乎无法轻易解决(或完全理解) 运行以下代码:

(" ".join(map(str,np.int32(((np.arange(14))))))).split()

产生以下内容:

Out[54]: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13']

(" ".join(map(str,np.int32(((np.arange(15))))))).split()

产生以下

Out[2]: 
['0',
 '1',
 '2',
 '3',
 '4',
 '5',
 '6',
 '7',
 '8',
 '9',
 '10',
 '11',
 '12',
 '13',
 '14']

我希望能够以列的形式创建一个列表,而不是使用少于15个数字的行。

有人对此提供任何帮助吗?

原因是QtWidgets.QCombobox.additems('字符串列表')会破坏控制台/内核(如果是14但不是15(或更高)。

(在Windows 7上使用spyder 3.6 / ipython 3.6.2 / anaconda(4.4,64bit)/ pyqt 5.6.2)

编辑1: 非常感谢回复..但是.. map(str, np.int32(np.arange(14)))生成Out[4]: <map at 0xba4f2b0>

突然,它在列表中的项目少于15个。似乎越来越像pyqt / QCombobox的问题是一些随机错误(当有太多的组合框或某些东西...... ......可能是另一个问题。

1 个答案:

答案 0 :(得分:1)

首先,你可以摆脱很多括号。你可以写:

(" ".join(map(str,np.int32(((np.arange(14))))))).split()

作为

(" ".join(map(str, np.int32(np.arange(14))))).split()

" ".join().split()完全相反,所以你也可以摆脱它们而没有效果。

map(str, np.int32(np.arange(14))

您看到的差异是15个数字的列表显示为为行,而14个数字的列表显示为为列。在内部,没有区别。 如果要在新行上显示每个数字,只需使用换行符加入数字:

"\n".join(map(str, np.int32(np.arange(14)))

如果你坚持使用冒号和括号,你可以这样做:

print("[%s]" % ",\n ".join(map(str, np.int32(np.arange(14)))))