首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python模块来生成字符串中可能的字符串替换的所有排列?

Python模块来生成字符串中可能的字符串替换的所有排列?
EN

Stack Overflow用户
提问于 2014-07-08 14:45:01
回答 1查看 198关注 0票数 1
代码语言:javascript
复制
template = "{{ person }} is a {{ quality }} {{ occupation }}"
replacements = {
"person":["John","Matt","Steve"],
"quality":["great","dedicated"],
"occupation":["engineer","student","athelete"]
}

Output:
John is a great engineer
Matt is a great engineer
Steve is a great engineer
John is a dedicated engineer
Matt is a dedicated engineer
Steve is a dedicated engineer
John is a great student
Matt is a great student
Steve is a great student
.............................

它们可以通过使用可替换元素的列表并在其上循环生成排列,然后加入列表元素来生成。

代码语言:javascript
复制
list_input =     [["John","Matt","Steve"],["is"],["a"],["great","dedicated"],["engineer","student","athelete"]]

example_permutation = ["John","is","a","great","engineer"]

是否有可生成类似排列的python模块/方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 14:50:28

这就是名单上的cartesian product

代码语言:javascript
复制
import itertools

list_input =     [["John","Matt","Steve"],["is"],["a"],["great","dedicated"],["engineer","student","athelete"]]
for element in itertools.product(*list_input):
    print element

或者你可以直接从你的dict @dano(建议)

代码语言:javascript
复制
replacements = {
"person":["John","Matt","Steve"],
"quality":["great","dedicated"],
"occupation":["engineer","student","athelete"]
}

for element in itertools.product(*replacements.values()):
    print("{} is a {} {}".format(*element))


#output 

John is a great engineer
John is a great student
John is a great athelete
John is a dedicated engineer
John is a dedicated student
John is a dedicated athelete
Matt is a great engineer
Matt is a great student
Matt is a great athelete
Matt is a dedicated engineer
Matt is a dedicated student
Matt is a dedicated athelete
Steve is a great engineer
Steve is a great student
Steve is a great athelete
Steve is a dedicated engineer
Steve is a dedicated student
Steve is a dedicated athelete
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24634833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档