相关疑难解决方法(0)

计算两个列表中的相同对

我的清单有

a = [1,2,3,4,2,7,3,5,6,7]
b = [1,2,3,1,2,5,6,2,6,7]
Run Code Online (Sandbox Code Playgroud)

我需要数一下a[i]==b[i]

对于以上示例,答案应为

6
Run Code Online (Sandbox Code Playgroud)

答案的详细说明是

a[0]==b[0] (1==1)
a[1]==b[1] (2==2)
a[2]==b[0] (3==3)
a[4]==b[4] (2==2)
a[8]==b[8] (6==6)
a[9]==b[9] (7==7)
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

16
推荐指数
3
解决办法
1167
查看次数

Python内置和函数与循环性能

我注意到,sum当汇总1 000 000个整数列表时,Python的内置函数比for循环快大约3倍:

import timeit

def sum1():
    s = 0
    for i in range(1000000):
        s += i
    return s

def sum2():
    return sum(range(1000000))

print 'For Loop Sum:', timeit.timeit(sum1, number=10)
print 'Built-in Sum:', timeit.timeit(sum2, number=10)

# Prints:
# For Loop Sum: 0.751425027847
# Built-in Sum: 0.266746997833
Run Code Online (Sandbox Code Playgroud)

这是为什么?如何sum实施?

python performance sum

10
推荐指数
2
解决办法
1万
查看次数

为什么“全部”实现比编写for循环要慢

我得到一个列表,想知道所有元素是否相同。对于确实具有相同数量的元素数量很高的列表,将其转换为a set的速度很快,但通过提前退出列表遍历的效果更好:

def are_all_identical_iterate(dataset):
    first = dataset[0]
    for data in dataset:
        if data != first:
            return False
    return True

# versus

def are_all_identical_all(dataset):
    return all(data == dataset[0] for data in dataset)
# or
def are_all_identical_all2(dataset):
    return all(data == dataset[0] for data in iter(dataset))
# or
def are_all_identical_all3(dataset):
    iterator = iter(dataset)
    first = next(iterator)
    return all(first == rest for rest in iterator)

NUM_ELEMENTS = 50000
testDataset = [1337] * NUM_ELEMENTS # all identical

from timeit import timeit
print(timeit("are_all_identical_iterate(testDataset)", setup="from __main__ …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
229
查看次数

标签 统计

python ×3

list ×1

performance ×1

python-3.x ×1

sum ×1