从可迭代对象(例如列表或集合)生成伪有序对列表的 Pythonic 方法

标签 python

给定一个由有限元素集组成的可迭代对象:

(a, b, c, d)

举个例子

从上面的可迭代生成以下(伪)有序对的 Pythonic 方法是什么:

ab
ac
ad
bc
bd
cd

一个简单的方法是使用 for 循环,但我想知道是否有一种 Pythonic 方法可以从上面的可迭代生成此列表?

最佳答案

尝试使用combinations .

import itertools
combinations = itertools.combinations('abcd', n)

会给你一个迭代器,你可以循环它或使用list(combinations)将其转换为列表

为了仅包含示例中的对,您可以传递 2 作为参数:

combinations = itertools.combinations('abcd', 2)

>>> print list(combinations)
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

关于从可迭代对象(例如列表或集合)生成伪有序对列表的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47186849/

相关文章:

python - 我尝试用另一个定义中的另一个字典迭代嵌套字典,但 Django 不渲染它

python - 在 QGraphicsGridLayout 中调整小部件大小

Python 不会取消缓冲打印语句

python - 匹配由字符串的开头和结尾或非单词字符绑定(bind)的单词的正则表达式

Python 正则表达式与 devanAgarI

python - 如果插入时间在时间​​范围内则插入表

python - Pandas 'bool object is not callable'

Python GraphQL Client - 传递变量时意外的标点符号

python - 根据可能的最低行进距离将一组分成两部分

python - 已弃用警告 - mataplotlib 库中的 where 参数