Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免在python程序输出中打印None列表_Python_List - Fatal编程技术网

如何避免在python程序输出中打印None列表

如何避免在python程序输出中打印None列表,python,list,Python,List,我最近开始学习python,我正在尝试以字典排序的顺序打印字符串S的大小k的所有可能排列 我得到了正确的结果,但在输出中,我的程序还打印了一个无类型列表,即:[无,无] from itertools import permutations S,k = input().split() [print(x) for x in sorted(map("".join,permutations(S,int(k))))] 输入电流输出:hs 2 hs 嘘 [没有,没有] from itertools imp

我最近开始学习python,我正在尝试以字典排序的顺序打印字符串S的大小k的所有可能排列

我得到了正确的结果,但在输出中,我的程序还打印了一个无类型列表,即:[无,无]

from itertools import permutations
S,k = input().split()
[print(x) for x in sorted(map("".join,permutations(S,int(k))))]
输入电流输出:hs 2
hs

[没有,没有]

from itertools import permutations
S,k = input().split()
[print(x) for x in sorted(map("".join,permutations(S,int(k))))]
输入的预期输出:hs 2
hs
sh

print(..)
是一个函数,用于写入标准输出通道,并返回
None
。因此,您正在将
None
s添加到您的列表中

您可以使用以下命令创建值列表:

sorted(map("".join,permutations(S,int(k)))
尽管对于大型
k
,这最终会耗尽内存。您只需提前对
S
进行排序,这样效率更高,您可以在此处以合适的方式使用
排列
,从而减少内存量,如:

for p in permutations(sorted(S),int(k)):
    print(''.join(p))
对于排列中的p(已排序,int(k)):
打印(''.join(p))

因此,该算法将采用O(n logn+nk),而不是O(nk×k×logn)。内存占用将是O(n),而不是O(nk),其中n是字符串中的字符数,k是排列中的项目数。

这就是为什么建议不要使用列表理解来处理副作用。您实际上不需要列表,但希望代码执行某些操作,例如
print
print(…)
返回
None
。我可以使用列表执行同样的操作吗comprehension@San:如果运行程序,则不会打印
[None,None]
。shell将简单地打印它。但是使用列表理解将是一个可怕的想法,因为这将再次生成一个O(n^k)
None
项的列表,从而耗尽内存。遗憾的是,列表理解并不像某些函数式编程语言那样是单子的语法糖:)