Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x 我正试图找到在字符串中添加字符的所有可能组合_Python 3.x - Fatal编程技术网

Python 3.x 我正试图找到在字符串中添加字符的所有可能组合

Python 3.x 我正试图找到在字符串中添加字符的所有可能组合,python-3.x,Python 3.x,我正在尝试获得向字符串中添加字符的所有可能组合。例如: 假设我有字符串:abcdefg1234567890 我想找到所有可能的字符组合,它们的顺序完全相同,但在每个字符之间加上“-”。因此,我希望我的回答包括以下内容: a-bcdefg1234567890和ab-cdefg1234567890以及abc-defg1234567890 等等,以及: a-b-c-d-efg1234567890和abc-defg-1234-5678-9-0 我的代码已经获取了字符串并开始添加“-”字符,然后一旦到达末

我正在尝试获得向字符串中添加字符的所有可能组合。例如:

假设我有字符串:abcdefg1234567890

我想找到所有可能的字符组合,它们的顺序完全相同,但在每个字符之间加上“-”。因此,我希望我的回答包括以下内容:

a-bcdefg1234567890和ab-cdefg1234567890以及abc-defg1234567890

等等,以及: a-b-c-d-efg1234567890和abc-defg-1234-5678-9-0

我的代码已经获取了字符串并开始添加“-”字符,然后一旦到达末尾,它将存储该值并从左到右添加更多字符。这将给出每一个在右侧带“-”的组合,但不包括以下内容:

a-b-cdefg1234567890

因为在第一次催眠结束后,它会停留在那里,并开始从左到右增加更多

感谢您的帮助


谢谢

这是一个编码逻辑问题。它与编程语言没有多大关系。我在看另一个SO,结果不小心换成了Python SO。我不懂Python,但我可以告诉你如何用算法解决这个问题

如果您想要“字符间短划线”和“字符间无短划线”的所有可能组合,您将输出2^(chars-1)个可能的字符串。(如果字符串中有4个字符,则这些字符之间有3个空格。)

您有一个17个字符的字符串,因此将有2^16个可能的组合,或65536个不同的字符串。这是大量的输出字符串

您需要编写从0到2^(chars-1)计数的代码。对于每个值,您将生成一个可能的输出字符串。该计数的位将告诉您哪个字符对应该插入破折号,哪个不应该

为此,编写循环遍历计数二进制中每一位的代码,如果该位为1,则在该位置向输出添加破折号,如果该位为0,则不在该位置添加破折号

假设你只有4个字符:1234。破折号有3个空格,1-2-3-4

假设我们将每个仪表板位置命名为A、B和C:

1A2B3C4
现在让我们假设,如果每个字母都有破折号,则为其指定1,如果没有破折号,则为其指定0

写出来,用空格代替破折号,这样你就可以看到图案了:

ABC     A B C
000    1 2 3 4
001    1 2 3-4
010    1 2-3 4
011    1 2-3-4
100    1-2 3 4
101    1-2 3-4
110    1-2-3 4
111    1-2-3-4
每次添加另一个字符时,都会在字符点之间添加另一个可能包含破折号或不包含破折号的字符点,因此可能的输出字符串总数将增加一倍

请注意,我的ABC值中0和1的模式是二进制计数时得到的位模式

编辑:
检查itertools:它的任何特定部分?我看了一遍,似乎找不到我要找的东西。我没有在arduino上工作。我正在我的MacBookPro上用Pycharm运行这个程序,使用的是python 3。我把这个问题放错地方了吗?我搞错了,误入了Python。我编辑了我的答案,使之非平台化和非语言化。邓肯,感谢你的回复。但我不确定我是否理解。我也不确定我是否理解你的数学。因此,如果我的字符串长度为17个字符,并且字符必须保持相同的顺序,那么只需在字符之间添加1到16个破折号,就可以得到65000多个字符串?如果它能生产出所有这些,那就太好了。我正在使用xlsxwriter并将它们记录到.xlsx文件中。但我也不知道你是如何做的比特部分,然后如何告诉它添加-'在正确的地点…是的。如果您有17个字符,则有16个可能放置破折号的位置。在每个地方,您是否插入破折号。请参阅对我的答案的编辑。当使用一个4个字符的字符串时,我列出了所有可能的组合。正如我所说,我不懂Python,也不知道什么是
xlsxwriter
。我告诉你要使用的算法。用Python实现该算法取决于您。
Write 2 nested loops:

Outer loop: Loop from 0 to `2^(char_count - 1)`. Let's call that value dashBits.

//Each value of dashBits will generate one of your possible output strings (in your case, one of 65536 output strings.

set outputString to an empty string.

Inner loop: Loop from left to right of the input string

   Append the current input character of your input string to the output.
   Look at the 0th bit of dashBits. If it's 1, append a dash to your output. If it's 0, don't do anything.    
   Shift dashBits 1 bit to the right.