动漫人物
并非如此,您可以利用副作用来破解某些东西,但这不是列表理解的目的>>> even = []>>> odd = []>>> [(odd if i%2 else even).append(i) for i in range(10)][None, None, None, None, None, None, None, None, None, None] # it's a waste to make this list>>> even[0, 2, 4, 6, 8]>>> odd[1, 3, 5, 7, 9]这一点浪费更少(但更难理解)>>> even = []>>> odd = [i for i in range(10) if i%2 or even.append(i)]>>> even[0, 2, 4, 6, 8]>>> odd[1, 3, 5, 7, 9]但是,您可以使用第一个列表理解中的条件来简化循环even = []odd = []for i in my_list: # Doesn't make a pointless list of `None` (odd if i%2 else even).append(i) 如果my_list确实很长,则值得将append方法绑定到局部变量以节省额外的查找(对于10000的列表,可节省约30%)even = []odd = []even_append = even.appendodd_append = odd.appendfor i in my_list: (odd_append if i%2 else even_append)(i) 另一个提速方法是使用i&1而不是i%2选择偶数或奇数