목록의 특정 요소에있는 경우 :파이썬 체크 단어가 더 나은 두는 방법이 있다면 궁금 해서요
if word==wordList[0] or word==wordList[2] or word==wordList[3] or word==worldList[4]
목록의 특정 요소에있는 경우 :파이썬 체크 단어가 더 나은 두는 방법이 있다면 궁금 해서요
if word==wordList[0] or word==wordList[2] or word==wordList[3] or word==worldList[4]
매우 간단한 작업과 여러 가지 방법으로 처리 할 수 있습니다. 흥미 진진한! 아마 그렇지 않으면
b = word in (wordList[:1] + wordList[2:])
나는 것 :
당신이 확실히 알고있는 경우에 단어 목록은 (다른 너무 비효율적 일 수 있음) 나는이 하나를 사용하는 것이 좋습니다 작다는 사실을 : 여기에 내가 무슨 생각입니다 (여전히, 그것은 달려!)이 갈 : 예를 들어
b = word in (w for i, w in enumerate(wordList) if i != 1)
, 여러 인덱스를 무시하려는 경우 :
ignore = frozenset([5, 17])
b = word in (w for i, w in enumerate(wordList) if i not in ignore)
이것은 파이썬이며 비늘입니다.
### Constructing a tuple ad-hoc. Easy to read/understand, but doesn't scale.
# Note lack of index 1.
b = word in (wordList[0], wordList[2], wordList[3], wordList[4])
### Playing around with iterators. Scales, but rather hard to understand.
from itertools import chain, islice
b = word in chain(islice(wordList, None, 1), islice(wordList, 2, None))
### More efficient, if condition is to be evaluated many times in a loop.
from itertools import chain
words = frozenset(chain(wordList[:1], wordList[2:]))
b = word in words
나는 frozenset() 메서드를 사용하여 종료했습니다. 감사합니다! 원래의 방식대로 목록을 작성했기 때문에 오류가 발생했지만 완벽하게 작동합니다! – Sam
word in wordList
또는 먼저 4를 확인하려는 경우,
word in wordList[:4]
"word in wordList"와 같은 것을 원했지만 두 번째 요소는 무시하고 싶습니다. – Sam
@Sam :'word wordList [0] + wordList [2 :]'는 가장 succint 방식입니다. 새로운 목록 객체를 생성한다는 사실을 명심하십시오. 목록이 비싸면 반복하는 것이 좋습니다. 그러나 요소를 건너 뛰고 있다는 사실은 각 색인에서 의미가 있음을 나타냅니다. 왜 다른 컬렉션 유형을 사용하지 않습니까? 'namedtuple'? '__contains__'을 가진 커스텀 클래스? – Daenyth
감사합니다, Daenyth! 저는 아직이 언어에 익숙하지 않지만 구조를 만드는 방법을 모색해야합니다. – Sam
indexList에 확인할 표시의 목록 (예 : [0,2,3]
)을 사용하고 확인하려는 단어를 모두 wordList로 지정하십시오. 그런 다음, 다음 명령은 목록으로, 0 번째, 2, 및 단어 목록의 3 요소를 반환합니다 : 이것은 [wordList[0], wordList[2], wordList[3]]
를 반환합니다
[wordList[i] for i in indexList]
.
목록을 통해 루프 그들에게 그 방법을 확인하십시오
그러나 주목할만한 대안이있다. – twain249
사례가 중요합니까? –