How can I combine a conditional with a for loop in Python?

十年热恋 提交于 2019-12-31 06:30:24

问题


I have a simple example I've drawn up. I thought it was possible to combine if statements and for loops with minimal effort in Python. Given:

sublists = [number1, number2, number3]

for sublist in sublists:
    if sublist:
        print(sublist)

I thought I could condense the for loop to:

for sublist in sublists if sublist:

but this results in invalid syntax. I'm not too particular on this example, I just want a method of one lining simple if statements with loops.


回答1:


if you want to filter out all the empty sub list from your original sub lists, you will have to do something like below. this will give you all the non empty sub list.

print([sublist for sublist in sublists if sublist])

*edited for syntax




回答2:


Immediately solved this in the interpreter right after I posted.

for x in ( x for x in sublists if x ):

Not as clean as I'd like, the nested if statement is more readable in my opinion. I'm open to other suggestions if there is a cleaner way.




回答3:


I think you can't simplify the syntax to a one-liner in python, but indeed have to type out all the lines chaining for loops and if statements.

An exception to this are list comprehensions (see here at 5.1.3). They can be used to produce new lists from lists. An example:

test_list = ["Blue Candy", "Apple", "Red Candy", "Orange", "Pear", "Yellow Candy"]
candy_list = [x for x in test_list if "Candy" in x]


来源:https://stackoverflow.com/questions/51944790/how-can-i-combine-a-conditional-with-a-for-loop-in-python

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