2017-12-07 1 views
0

내 목록입니다 :목록의 가능한 조합을 어떻게 파이썬으로 인쇄 할 수 있습니까?

Russia Vs. Egypt 
Russia Vs. Saudi Arabia 
Russia Vs. Uruguay 
Egypt Vs. Saudi Arabia 
Egypt Vs. Uruguay 
Saudi Arabia Vs. Uruguay 

내가 for 루프를 사용하여이 작업을 수행 할 수

groupA=['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay'] 

그래서 내가 서로 재생됩니다 팀의 고유 한 모든 조합을 인쇄하려면?

+0

이중 for 루프로 수행 할 수 있습니다. –

+0

['itertools combination'] 사용 (https://docs.python.org/3.5/library/itertools.html#itertools.combinations) – MrT

+0

지루했기 때문에이 코드를 사용해도 행복했지만 그 사실을 잊지 마십시오. 미래 당신은 먼저 자신을 시도해야합니다. – thumbtackthief

답변

2

이것은 당신이 원하는 일을해야합니다

groupA=['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay'] 

for i in range(len(groupA)): 
    for j in range(i+1, len(groupA)): 
    print("{} Vs. {}".format(groupA[i], groupA[j])) 

을 사용 itertools을 선호하는 경우 :

from itertools import combinations 

groupA=['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay'] 

for combo in combinations(groupA, 2): 
    print("{} Vs. {}".format(combo[0], combo[1])) 
+0

길이를 추출 할 필요가 없으며 목록의 길이를 여러 번 사용하려면 변수를 저장하는 변수를 강하게 고려해야합니다. –

+0

@ShailynOrtiz 네,이 문제를 해결하는 여러 가지 방법이 있습니다. – thumbtackthief

+0

완전히 동의하면 여전히 한 번 이상 사용하게 될 값을 저장하지 않는 것이 좋지 않습니다. –

2

이 트릭 수행 할 수 있습니다

groupA = ['Russia', 'Egypt', 'Saudi Arabia', 'Uruguay'] 
for index, country in enumerate(groupA): 
    for rival in groupA[index+1:]: 
     print('%s vs %s'%(country, rival)) 
2

당신이 생각하고 때마다를 순열, 조합, 데카르트 제품 등, itertools 라이브러리를 생각해 보라. 그것은 파이썬의 표준입니다. 그리고 거기에 있지 않다면 sympy을보십시오.

>>> from itertools import combinations 
>>> for c in combinations(groupA, 2): 
...  '{} Vs. {}'.format(*c) 
... 
'Russia Vs. Egypt' 
'Russia Vs. Saudi Arabia' 
'Russia Vs. Uruguay' 
'Egypt Vs. Saudi Arabia' 
'Egypt Vs. Uruguay' 
'Saudi Arabia Vs. Uruguay' 

format도 출력을위한 좋은 대안입니다.

+0

나는 내 대답의 복제본으로 다운 다운하려고했지만, 나는 당신이 나의 방법보다 깨끗한 콤보를 어떻게 풀 었는지 좋아한다. – thumbtackthief

+0

사과! 나는 대답의 두 번째 부분을 놓쳤다. –

+0

걱정할 필요가 없습니다. 개선이있었습니다. 나로부터의 downvote 없음! – thumbtackthief

관련 문제