2016-09-18 4 views
-1

목록에 파이썬 코드 목록이 있습니다. 해당 목록의에 특정 항목이 두 개 있는지 확인하고 싶습니다.복수 목록에 여러 항목이 포함되어 있는지 확인

if 'a' in flist[0:5] and 'b' in flist[flist.index('a')]: 
    print (true) 

이 작업을 수행하는 가장 쉬운 방법은 무엇입니까 :

f1=['a','b'] 
f2=['c','d'] 
f3=['e','f'] 
f4=['g','h'] 
f5=['i','j'] 
f6=['k','l'] 

flist=[f1,f2,f3,f4,f5,f6] 

내가 좋아하는 뭔가를 원하는?

+0

'flist'를 반복하고 거기에있는 모든 목록을 확인하지 않는 이유는 무엇입니까? – UnholySheep

+0

그래서 어느 목록에 두 항목이 모두 포함되어 있는지 알고 싶습니까? – Paul

+0

'flist'를 반복하고 두 요소가있는 목록의 인덱스를 얻을 수 있습니다. –

답변

1
for f in flist: 
    if 'a' not in f: 
     continue 
    if 'b' not in f: 
     continue 
    return True 
return False 
+0

고마워, 전에 비슷한 걸 시도했지만 작동하지 않았어,이게 좋다. – user2972359

3

당신은 issubsetany를 사용할 수 있습니다

if any({'a', 'b'}.issubset(sublist) for sublist in flist): 
    print "a and b were found" 

any를 사용하여 검색이 즉시 발견되는 상위 검색 항목의로 중지가됩니다.

하위 목록에 두 개 이상의 항목이 포함될 수있는 일반적인 경우를 처리합니다.


그러나 하위 목록은 항상 두 개의 항목을 포함 할 경우, 평등을 확인하기에 충분

:

if any({'a', 'b'} == set(sublist) for sublist in flist): 
    print "a and b were found" 
1

당신은 그것을 통해 어떻게 반복에 대해.

for i in range(len(flist)): 
    if ['a', 'b'] == sorted(flist[i]): 
    print (i) 

또는 단 한 개의 라이너 만 있으면 쉽게 알 수 있습니다.

print (["a", "b"] in [sorted(x) for x in flist]) 
+0

'for i in range (len (flist)) '대신'for flist'에'for sublist'를 사용하십시오. – jadsq

+0

그 목록의 색인이 인쇄되어있는 경우 그랬습니다. –

+0

인덱스를 유지하려면 'for i, enumerate (flist)의 하위 목록'을 선택하십시오. – jadsq

관련 문제