python - 在 python 中生成嵌套元组的所有组合

标签 python

<分区>

这是 Berkeley Logo 中的一个简短但完整的程序:

to choices :menu [:sofar []]
if emptyp :menu [print :sofar stop]
foreach first :menu [(choices butfirst :menu sentence :sofar ?)]
end

下面是您如何使用它。你输入

choices [[small medium large]
         [vanilla [ultra chocolate] lychee [rum raisin] ginger]
         [cone cup]]

和标志回复

    small vanilla cone
    small vanilla cup
    small ultra chocolate cone
    small ultra chocolate cup
    small lychee cone
    small lychee cup
    small rum raisin cone
    small rum raisin cup
    small ginger cone
    small ginger cup
    medium vanilla cone
    medium vanilla cup
    medium ultra chocolate cone
    medium ultra chocolate cup
    medium lychee cone
    medium lychee cup
    medium rum raisin cone
    medium rum raisin cup
    medium ginger cone
    medium ginger cup
    large vanilla cone
    large vanilla cup
    large ultra chocolate cone
    large ultra chocolate cup
    large lychee cone
    large lychee cup
    large rum raisin cone
    large rum raisin cup
    large ginger cone
    large ginger cup

来源:http://www.eecs.berkeley.edu/~bh/logo-sample.html

你会如何在 python 中做到这一点?

最佳答案

像往常一样,itertools module提供解决方案:

>>> choices = [["small", "medium", "large"],
...            ["vanilla", "ultra chocolate", "lychee", "rum raisin", "ginger"],
...            ["cone", "cup"]]
>>> from itertools import product
>>> print("\n".join(" ".join(item) for item in product(*choices)))
small vanilla cone
small vanilla cup
small ultra chocolate cone
small ultra chocolate cup
small lychee cone
small lychee cup
small rum raisin cone
small rum raisin cup
small ginger cone
small ginger cup
medium vanilla cone
<etc...>

关于python - 在 python 中生成嵌套元组的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197209/

相关文章:

python - 从 Seaborn/Matplotlib 中的颜色条中删除最低颜色

python - 用于分隔 numpy 数组的字典键和值

Python,变量的数学运算

python - DefaultRouter 类没有为 python 中的所有应用程序创建 API Root View

python - 如何在 Django ORM 中连接两个表而没有第一个表中的任何列引用第二个

python - 通过网络或任何其他 key 交换进行 Diffie-Hellman key 交换

python - 使用继承正确扩展 tkinter 小部件

python - 如何使用 socketserver 接收大文件?

python - 在 python 中有效地比较两个 XML 文件

python - 在 Windows 上更改 virtualenv 文件夹