gpt4 book ai didi

python - 针对数组内的 .NET 数组的嵌套列表理解

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:44 24 4
gpt4 key购买 nike

我有一个 .NET 结构,其中包含数组。如果可能的话,我想使用 IronPython 中的列表理解从特定数组中创建特定数组中的项目成员列表。

这是我现在正在做的事情:

tag_results = [item_result for item_result in results.ItemResults if item_result.ItemId == tag_id][0]
tag_vqts = [vqt for vqt in tag_results.VQTs]
tag_timestamps = [vqt.TimeStamp for vqt in tag_vqts]

因此,从结果数组中获取与我的条件匹配的单个项目结果,然后从这些项目结果中获取 vqts 数组,然后获取 vqts 数组中每个 VQT 的所有时间戳成员。

想要在一条语句中完成此操作是否太过分了?稍后,时间戳的使用方式如下:

vqts_to_write = [vqt for vqt in resampled_vqts if not vqt.TimeStamp in tag_timestamps]

我不确定生成器是否合适,因为我并没有真正循环它们,我只是想要一个包含该项目/标签的所有项目结果的所有时间戳的列表,以便我可以测试列表。

我必须在脚本中的不同上下文中多次执行此操作,所以我只是想知道我是否以高效且Pythonic的方式执行此操作。我正在将其重构为一种方法,这让我考虑让它变得更容易。

仅供引用,这是 IronPython 2.6,嵌入在不允许使用 numpy、pandas 等的固定环境中。可以安全地假设我需要一个仅限 python 2.6 的解决方案。

我的主要问题是:

如果可能的话,将其折叠成一行会混淆代码吗?

如果折叠是合适的,那么方法会不会太过分了?

两个!我的两个主要问题是:

如果可能的话,将其折叠成一行会混淆代码吗?

如果折叠是合适的,那么方法会不会太过分了?

生成器是否适合测试列表中的成员资格?

三!我的三个问题是...我的问题中有各种各样的疑问,例如...我会再次出现...

(它是Python...)

最佳答案

tag_results = [...][0] 构建一个全新列表只是为了获取一项。这就是生成器表达式上的 next() 的用途:

next(item_result for item_result in results.ItemResults if item_result.ItemId == tag_id)

它仅迭代足以获取第一个项目。

可以内联它,但为了便于阅读,我会将其保留为单独的表达式。

余数很容易放入一个表达式中:

tag_results = next(item_result for item_result in results.ItemResults 
if item_result.ItemId == tag_id)
tag_timestamps = [vqt.TimeStamp for vqt in tag_results.VQTs]

如果您只需要进行成员资格测试,我会将其设置为集合:

tag_timestamps = set(vqt.TimeStamp for vqt in tag_results.VQTs)

集合允许进行恒定时间的成员资格测试;针对列表进行测试需要线性时间,因为每次此类测试都可能会扫描整个列表。

关于python - 针对数组内的 .NET 数组的嵌套列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38676956/

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