2016-07-03 6 views
-1

Я новичок в python, и в настоящее время я работаю над созданием подмножеств в списке с функцией. Вот образец, который мне нужно вернуть.Сгенерировать подмножества двух элементов параметров

Например.

  • Строка: AECG
  • Поднаборы: ['AE', 'AC', 'AG', 'EC', 'EG', 'CG']

Я думал поставить строку в пустой список, а затем поиграйте в списке, но он не работает. Вы можете помочь, пожалуйста ~

result=[] 
s="AECG" 

for i in s: 
    result.append(i) 
    for j in range (0,len(result)-1): 
     for x in range (1,len(result)): 
      subsets=result.append(j,x) 
    print(subsets) 

ответ

4

Использование itertools.combinations:

>>> import itertools 
>>> list(itertools.combinations('AECG', 2)) 
[('A', 'E'), ('A', 'C'), ('A', 'G'), ('E', 'C'), ('E', 'G'), ('C', 'G')] 
>>> [''.join(x) for x in itertools.combinations('AECG', 2)] # tuples -> strings 
['AE', 'AC', 'AG', 'EC', 'EG', 'CG'] 

UPDATE Используя map и связанный метод ''.join:

>>> list(map("".join, itertools.combinations('AECG', 2))) 
['AE', 'AC', 'AG', 'EC', 'EG', 'CG'] 
2

Для полноты картины здесь является решением с out itertools

subsets=[] 
s="AECG" 

for i in range (len(s)): 
    for j in range (i+1, len(s)): 
      subsets.append(s[i]+s[j]) # append modifies the list 
print(subsets) 
+0

Я думал об использовании двух циклов, но я не знал, как их применять соответствующим образом. Спасибо, теперь имеет смысл – Pydummy