Python for and if on one line

后端 未结 6 2006
情书的邮戳
情书的邮戳 2021-01-31 16:51

I have a issue with python.

I make a simple list:

>>> my_list = [\"one\",\"two\",\"three\"]

I want create a \"single line code

6条回答
  •  太阳男子
    2021-01-31 17:18

    You are producing a filtered list by using a list comprehension. i is still being bound to each and every element of that list, and the last element is still 'three', even if it was subsequently filtered out from the list being produced.

    You should not use a list comprehension to pick out one element. Just use a for loop, and break to end it:

    for elem in my_list:
        if elem == 'two':
            break
    

    If you must have a one-liner (which would be counter to Python's philosophy, where readability matters), use the next() function and a generator expression:

    i = next((elem for elem in my_list if elem == 'two'), None)
    

    which will set i to None if there is no such matching element.

    The above is not that useful a filter; your are essentially testing if the value 'two' is in the list. You can use in for that:

    elem = 'two' if 'two' in my_list else None
    

提交回复
热议问题