如何在每个顺序中使用单词测试字符串

时间:2016-12-20 22:50:33

标签: python-2.7

我正在尝试制作一个if语句,但我意识到我需要在每个可能的安排中测试字符串。那我该怎么做呢。

这是我的代码

string = ("red blue black")

if string == "red blue black":
    print("cool")

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的目标,您希望创建一个if语句,创建string变量的所有排列,然后测试您的"字符串"在任何这些安排中。

列表的所有排列都是"排列",因此您可以使用Windows batch assign output of a program to a variable的排列:

import itertools

string = ("red blue black")

all_arrangements = list(itertools.permutations(string.split()))

if string in [' '.join(i) for i in all_arrangements]:
    print "cool"

由于安排是根据您的字符串生成的,因此您可以期望您的if语句得到满足,并且" cool"将永远打印,除非您进一步更改if声明的逻辑。

为了更好地解释上面代码中的内容,您可以使用以下代码替换上面的if语句块,并确认字符串的哪种排列匹配:

print "checking for ", string

for arrangement in all_arrangements:
    if string == ' '.join(arrangement):
        print arrangement , "cool"
    else:
        print arrangement

输出:

checking for  red blue black
('red', 'blue', 'black') cool
('red', 'black', 'blue')
('blue', 'red', 'black')
('blue', 'black', 'red')
('black', 'red', 'blue')
('black', 'blue', 'red')

希望这有帮助。