gpt4 book ai didi

python - 在 pythonic 风格和列表理解方面遇到麻烦

转载 作者:太空狗 更新时间:2023-10-30 02:31:15 25 4
gpt4 key购买 nike

我昨天用 Python 编写了一个小脚本,这不是我的主要语言,它给我留下了一些关于如何以正确的“pythonic”风格做事的问题。任务相当简单,我有两个数组 fieldnamesvalues。想象一下他们的内容是

fieldnames = ['apples','oranges','pears','bananas']
values = [None,2,None,5]

我需要创建一个字段名数组,该数组仅包含与非 None 值对应的索引。目前我是这样做的:

#print fieldnames
usedFieldnames = []

for idx,val in enumerate(values):
if val is not None:
usedFieldnames.append(fieldnames[idx])

我可能是错的,但这对我来说似乎非常非 pythonic,我想知道是否有更适合 python 的方法来通过列表理解来做到这一点。任何帮助,将不胜感激。

最佳答案

您可以使用 zip() :

>>> fieldnames = ['apples','oranges','pears','bananas']
>>> values = [None,2,None,5]
>>> [field for field, value in zip(fieldnames, values) if value is not None]
['oranges', 'bananas']

如果您使用的是 python2.x,而不是 zip(),它会创建一个带有压缩列表的新列表,您可以采用“迭代”方法并使用 itertools.izip() :

>>> from itertools import izip
>>> [field for field, value in izip(fieldnames, values) if value is not None]
['oranges', 'bananas']

对于 python3.x,zip() 返回一个迭代器,而不是一个列表。

关于python - 在 pythonic 风格和列表理解方面遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23247240/

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