我有一个包含if-else语句的列表,它在两个范围内循环
当if条件测试为false时,是否可以使用列表理解来中断两个循环中的一个
在我的代码示例中,我需要一个有序列表,其中包含给定字母的所有唯一组合(具有指定的最大长度),按“我的”字母表的顺序排列
str_len = 3
my_list = ["A", "H"]
alphabet = [" ", "A", "H"]
for i in range(str_len-1):
my_list = [i+j if i[-1] != " " else i for i in my_list for j in alphabet]
print(my_list)
这就是我得到的
['A ', 'A ', 'A ', 'AA ', 'AAA', 'AAH', 'AH ', 'AHA', 'AHH', 'H ', 'H ', 'H ', 'HA ', 'HAA', 'HAH', 'HH ', 'HHA', 'HHH']
但是我不想要重复的。像这样:
['A ', 'AA ', 'AAA', 'AAH', 'AH ', 'AHA', 'AHH', 'H ', 'HA ', 'HAA', 'HAH', 'HH ', 'HHA', 'HHH']
编辑:指定我想要一个有序的列表
可以使用set()方法来防止创建的列表中出现重复项
这将完成以下工作:
看看itertools.combinations:
使用
itertools.combinations
,您只能定义组合的静态长度,但随后可以将其与chain.from_iterable组合希望有帮助
相关问题 更多 >
编程相关推荐