为什么 itertools.permutations() 返回一个列表,而不是一个字符串?

发布于 2024-12-15 13:18:50 字数 336 浏览 1 评论 0原文

为什么 itertools.permutations() 返回每个排列的字符或数字列表,而不是只返回字符串?

例如:

>>> print([x for x in itertools.permutations('1234')])
>>> [('1', '2', '3', '4'), ('1', '2', '4', '3'), ('1', '3', '2', '4') ... ]

为什么它不返回这个?

>>> ['1234', '1243', '1324' ... ]

Why does itertools.permutations() return a list of characters or digits for each permutation, instead of just returning a string?

For example:

>>> print([x for x in itertools.permutations('1234')])
>>> [('1', '2', '3', '4'), ('1', '2', '4', '3'), ('1', '3', '2', '4') ... ]

Why doesn't it return this?

>>> ['1234', '1243', '1324' ... ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

对你而言 2024-12-22 13:18:50

itertools.permutations() 就是这样工作的。它接受任意可迭代对象作为参数,并始终返回一个生成元组的迭代器。它没有(也不应该)特殊情况的字符串。要获取字符串列表,您始终可以自己连接元组:

list(map("".join, itertools.permutations('1234')))

itertools.permutations() simply works this way. It takes an arbitrary iterable as an argument, and always returns an iterator yielding tuples. It doesn't (and shouldn't) special-case strings. To get a list of strings, you can always join the tuples yourself:

list(map("".join, itertools.permutations('1234')))
ぃ弥猫深巷。 2024-12-22 13:18:50

因为它需要一个可迭代对象作为参数,但不知道它是一个字符串。该参数在文档中进行了描述。

http://docs.python.org/library/itertools.html#itertools.permutations

Because it expects an iterable as a parameter and doesn't know, it's a string. The parameter is described in the docs.

http://docs.python.org/library/itertools.html#itertools.permutations

不必你懂 2024-12-22 13:18:50

也可以对字符串和列表进行排列,下面是示例..

x = [1,2,3]

如果您需要对上面的列表进行排列

print(list(itertools.permutations(x, 2)))

# the above code will give the below..
# [(1,2),(1,3),(2,1)(2,3),(3,1),(3,2)]

Perumatation can be done for strings and list also, below is the example..

x = [1,2,3]

if you need to do permutation the above list

print(list(itertools.permutations(x, 2)))

# the above code will give the below..
# [(1,2),(1,3),(2,1)(2,3),(3,1),(3,2)]
黑凤梨 2024-12-22 13:18:50

我没有尝试过,但很可能应该有效

comb = itertools.permutations("1234",4)
for x in comb: 
  ''.join(x)    

I have not tried, but most likely should work

comb = itertools.permutations("1234",4)
for x in comb: 
  ''.join(x)    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文