相对较新的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的问题是一些随机错误(当有太多的组合框或某些东西...... ......可能是另一个问题。
答案 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)))))