gpt4 book ai didi

python - 使用 if/else 和 for 循环将项目附加到列表理解中的列表

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:04 30 4
gpt4 key购买 nike

我已经知道如何根据带有 if 循环的 for 附加一个值,但我想知道是否有优化的方法来执行此操作。

解决方法如下:

column=[]
for i in range(movies.shape[1]):
if ((movies.dtypes[i]==float) | (movies.dtypes[i]==int)):
column.append(movies.columns[i])
print(column)
['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 句子中,因为没有它我会得到一个语法错误。

那么,我可以将这 3 行放在一个句子中吗?

最佳答案

首先,你可以简化(x==y) | (x==z)x in (y, z)。此外,建议在逻辑表达式中使用逻辑 or 而不是按位或 |,但这不是重点。

要回答您的问题,是的,您只是对语法有点困惑。将 if 放在理解的 expression 部分会生成三元。 for 循环中的等价物是:

for i in range(movies.shape[1]):
column.append(movies.columns[i] if movies.dtypes[i] in (float, int) else 0)

使用 if 作为过滤器的方法是将它放在理解的末尾:

column = [movies.columns[i] for i in range(movies.shape[1]) if movies.dtypes[i] in (float, int)]

理解的语法在此处的文档中进行了描述:Displays for lists, sets and dictionaries .三元组称为 conditional expression在 Python 文档中。

关于python - 使用 if/else 和 for 循环将项目附加到列表理解中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59178623/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com