【问题标题】:Pythons Set & calculate versus list calculatePython 设置和计算与列表计算
【发布时间】:2019-08-30 10:46:53
【问题描述】:

在python中,我想知道一些事情。(抱歉我的英语) 我想知道集合和列表之间的交叉速度

有集合 A,集合 B 和列表 C,列表 D。 设置A和列表C,有'lion''tiger''cat'这样的元素。 集合 B 和列表 D,有 'lion' 'monkey' 'cat' 这样的元素。

我想知道交叉口速度(A & B, C & D)(结果:狮子猫)。 操作 A & B 比循环 C 和 D 的两倍快???

【问题讨论】:

  • 为什么不制作列表 C 和 D 集合,而只使用集合,这样对这些操作更有效?
  • 为什么不使用 timeit 自己尝试一下呢?考虑到 sets 是在 Python 的核心库(在 C 中)实现的,它应该比任何 运行得更快您编写的 Python 代码。谈到您要编写的代码,您能否在问题中添加 2 个循环?

标签: python list set calculation


【解决方案1】:

这里是比较几个代码sn-ps的时间性能的方法。请注意,实际执行时间取决于系统,但性能比率在不同机器上应大致相等。

import timeit

setup = '''\
A = {'dog', 'cat', 'horse'}
B = {'monkey', 'horse', 'dog'}
'''

statement = '''\
intersection = A & B
'''

timeit.timeit(stmt=statement, setup=setup, number=100000)
# 0.0126 sec

setup2 = '''\
C = ['dog', 'cat', 'horse']
D = ['monkey', 'horse', 'dog']
'''

statement2 = '''\
intersection = C[:]
for i in D:
    if i not in intersection:
        intersection.append(i)
'''

timeit.timeit(stmt=statement2, setup=setup2, number=100000)
# 0.0312 sec

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2017-06-27
    • 2018-06-30
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多