我已经知道如何在if循环中根据for附加值,但我想知道是否有一种优化的方法
以下是解决方案:
columm=[]
for i in range(movies.shape[1]):
if ((movies.dtypes[i]==float) | (movies.dtypes[i]==int)):
columm.append(movies.columns[i])
print(columm)
['title_year', 'aspect_ratio', 'duration', 'duration.1', 'budget', 'imdb_score', 'gross']
其中电影是一个数据集
我试过这个:
column=[movies.columns[i] if ((movies.dtypes[i]==float) | (movies.dtypes[i]==int)) else 0 for i in range(movies.shape[1])]
但结果是:
[0, 'title_year', 0, 'aspect_ratio', 'duration', 0, 0, 'duration.1', 0, 0, 0, 0, 0, 0, 0, 0, 'budget', 'imdb_score', 'gross']
我不得不把0放在else句中,因为如果没有它,它就意味着语法错误
那么,我能把这三行放在一句话里吗
首先,您可以将
(x==y) | (x==z)
简化为x in (y, z)
。另外,建议在逻辑表达式中使用逻辑or
,而不是按位或|
,但这不是重点回答你的问题,是的,你只是语法有点混乱。把
if
放在理解的表达式部分就形成了三元结构。for
循环中的等价项是:使用
if
作为过滤器的方法是将它放在理解的末尾:这里的文档中描述了理解的语法:Displays for lists, sets and dictionaries。三元在Python文档中称为conditional expression
相关问题 更多 >
编程相关推荐