Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.5k views
in Technique[技术] by (71.8m points)

python - Determine odd or even in a list, return results to a new list

The exercise I have is asking me to determine if each number of a list is even or odd, then to return the result in a new list named is_even.

My code

num_lst = [3, 20, -1, 9, 10]
is_even = []
for n in num_lst:
    if n % 2 == 0:
        n = is_even.append(bool(n))
    else :
        is_even.append(bool(0))
print(is_even)

It works, but is there a better way to do it ?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Bit-wise operators are preferred for even/odd detection:

num_lst = [3, 20, -1, 9, 10]
is_even = [not num & 1 for num in num_lst]
print(is_even)

Numbers that are odd have their least significant bit set so use & 1 to mask to just that bit. not conveniently coerces to boolean and inverts the results.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...