gpt4 book ai didi

Python 列表 : Pythonic way to get unique items in given List from a given Set

转载 作者:行者123 更新时间:2023-11-28 22:42:09 26 4
gpt4 key购买 nike

我有一个列表,它可能包含也可能不包含重复的元素。给定另一个列表/元素集,我需要该列表中存在的所有唯一元素的列表。

Input: 
input_list = ['android', 'ios', 'android', '', 'none', 'android', 'junk_os']
os_list = ['android', 'ios', 'windows']
Output:
output = ['android', 'ios']

执行此操作的最 Pythonic 和最有效的方法是什么?给定列表的长度可能在 10 左右,而 Os_list 固定为 3。但是这一行将被迭代超过 10000 次。

最佳答案

你可以使用集合来做到这一点

set(os_list).intersection(input_list)

编辑因为 os_list 是固定的,你也可以将它存储为一个集合:

os_list = {'android', 'ios', 'windows'}

# then it's a little less work to do each time in the loop
output = os_list.intersection(input_list)

剖析

# me
os_set = {'android', 'ios', 'windows'}
%timeit os_set.intersection(input_list)
# 1000000 loops, best of 3: 323 ns per loop

# vks
os_list = ['android', 'ios', 'windows']
%timeit [i for i in os_list if i in input_list]
# 1000000 loops, best of 3: 550 ns per loop

使用 Padraic Cunningham 的方法,您可以避免函数查找并从中获得更多的性能。作为奖励,它最终看起来像一个有意义的函数名称。

os_set = {'android', 'ios', 'windows'}
unique_valid_devices = os_set.intersection

%timeit output_list = unique_valid_devices(input_list)
1000000 loops, best of 3: 290 ns per loop

关于Python 列表 : Pythonic way to get unique items in given List from a given Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961474/

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