python check if word is in certain elements of a list

妖精的绣舞 提交于 2019-12-12 12:22:16

问题


I was wondering if there was a better way to put:

if word==wordList[0] or word==wordList[2] or word==wordList[3] or word==worldList[4]

回答1:


Very simple task, and so many ways to deal with it. Exciting! Here is what I think:

If you know for sure that wordList is small (else it might be too inefficient), then I recommend using this one:

b = word in (wordList[:1] + wordList[2:])

Otherwise I would probably go for this (still, it depends!):

b = word in (w for i, w in enumerate(wordList) if i != 1)

For example, if you want to ignore several indexes:

ignore = frozenset([5, 17])
b = word in (w for i, w in enumerate(wordList) if i not in ignore)

This is pythonic and it scales.


However, there are noteworthy alternatives:

### 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



回答2:


word in wordList

Or, if you want to check the 4 first,

word in wordList[:4]



回答3:


Have indexList be a list of the indicies you want to check (ie, [0,2,3]) and have wordList be all the words you want to check. Then, the following command will return the 0th, 2nd, and 3rd elements of wordList, as a list:

[wordList[i] for i in indexList]

This will return [wordList[0], wordList[2], wordList[3]].



来源:https://stackoverflow.com/questions/9659494/python-check-if-word-is-in-certain-elements-of-a-list

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!