Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 将字符放入字符串的所有组合_Python_String - Fatal编程技术网

Python 将字符放入字符串的所有组合

Python 将字符放入字符串的所有组合,python,string,Python,String,我试着做一些我有一个单词的事情,比如说“spark”,我发现所有可能的安排都是用“*”在单词中。例如“S****”、“SPAR*”、“SP*R*”。关于如何在python中做到这一点,有什么想法吗 import itertools s = "SPARK" r = ["".join(c if x else '*' for c, x in zip(s, t)) \ for t in itertools.product((True, False), repeat=len(s))] 这将为r

我试着做一些我有一个单词的事情,比如说“spark”,我发现所有可能的安排都是用“*”在单词中。例如“S****”、“SPAR*”、“SP*R*”。关于如何在python中做到这一点,有什么想法吗

import itertools
s = "SPARK"
r = ["".join(c if x else '*' for c, x in zip(s, t)) \
     for t in itertools.product((True, False), repeat=len(s))]
这将为
r
提供以下值:

['SPARK', 'SPAR*', 'SPA*K', 'SPA**', 'SP*RK', 'SP*R*', 'SP**K',
 'SP***', 'S*ARK', 'S*AR*', 'S*A*K', 'S*A**', 'S**RK', 'S**R*',
 'S***K', 'S****', '*PARK', '*PAR*', '*PA*K', '*PA**', '*P*RK',
 '***RK', '***R*', '****K', '*****']
其工作原理如下:顶层是列表理解。理解的外部循环使用
itertools.product
,它生成一个包含
True
False
值元组的iterable。每个元组对应于最终结果中的一个条目,其中
True
值对应于
s
中的一个字母,
False
值对应于
“*”

内部循环生成单个字符的列表。它迭代
zip(s,t)
,将
s
的字母与元组
t
中的
True
/
False
值配对。对于每一对,如果
x
(来自
t
的值)为
True
,则选择
c
(来自
s
的字母)。否则,它将选择
“*”


每个单个字符列表中的字母都用“
”连接成字符串。连接(…)

您好,您的第三个示例似乎有一个格式问题,因为用星号标记斜体。你可以用像SP\*R\*@MikeXydas这样的“\”来避开星号,因为我已经编辑过了。刷新页面。谢谢。它可以工作,但是你能解释一下它是如何工作的吗?这需要几分钟的时间lines@PythonyJavay好的,我添加了一个描述。让我知道它是否有意义。