相关疑难解决方法(0)

从另一个列表中删除一个列表中出现的所有元素

假设我有两个列表,l1并且l2.我想执行l1 - l2,返回所有l1不在的元素l2.

我可以想到一个简单的循环方法来做到这一点,但这将是非常低效的.什么是pythonic和有效的方法呢?

举个例子,如果我有l1 = [1,2,6,8] and l2 = [2,3,5,8],l1 - l2应该回来[1,6]

python list

315
推荐指数
9
解决办法
22万
查看次数

哪个更快,为什么?设置还是列出?

让我们说我有一个图表,想看看是否b in N[a].哪个更快实现,为什么?

a, b = range(2)
N = [set([b]), set([a,b])]
Run Code Online (Sandbox Code Playgroud)

要么

N= [[b],[a,b]]
Run Code Online (Sandbox Code Playgroud)

这显然过于简单,但想象图表变得非常密集.

python graph list set

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

蟒蛇素数Eratosthenes的筛子

您好,有人能告诉我如何在此代码中实现Eratosthenes筛选以使其快速?如果你能用筛子完成它,将非常感谢帮助.在这个特定的代码中,我真的遇到了麻烦.

#!/usr/bin/env python
import sys

T=10 #no of test cases
t=open(sys.argv[1],'r').readlines()

import math
def is_prime(n):
    if n == 2:
        return True
    if n%2 == 0 or n <= 1:
        return False
    sqr = int(math.sqrt(n)) + 1
    for divisor in range(3, sqr, 2):
        if n%divisor == 0:
            return False
    return True

#first line of each test case
a=[1,4,7,10,13,16,19,22,25,28]
count=0
for i in a:

    b=t[i].split(" ")
    c=b[1].split("\n")[0]
    b=b[0]

    for k in xrange(int(b)):
        d=t[i+1].split(" ")

        e=t[i+2].split(" ")
        for g in d:
            for j …
Run Code Online (Sandbox Code Playgroud)

python performance primes

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

如果项目在一个或两个(或N个)其他列表中,则如何从列表中删除该项目

我有一个名为的父列表parent_list,以及我要过滤的两个子集parent_list.这些子集也是python列表,它们被称为filter1filter2.

我可不可以做:

final_list = [object for object in parent_list if object.pk not in filter1 or filter2]
Run Code Online (Sandbox Code Playgroud)

或者我是否需要单独进行此过滤,如:

intermediate_list = [object for object in parent_list if object.pk not in filter1]
final_list = [object for object in intermediate_list if object.pk not in filter2]
Run Code Online (Sandbox Code Playgroud)

我无法从python列表推导的文档中明确找到答案.

python list-comprehension

3
推荐指数
1
解决办法
61
查看次数

查找数组的第一个副本

我决定学习python,我使用CodeFight进行训练.第一次采访练习是关于找到数组的第一个副本并返回它或者如果没有则返回-1.这是我写的代码:

def firstDuplicate(a):
b=[]
print(len(a))
for i in range(len(a)):
    if a[i] in b:
        return(a[i])
    elif a[i] not in b and i == (len(a)-1):
        return(-1)
    else:
        b.append(a[i])
Run Code Online (Sandbox Code Playgroud)

我通过除了最后3个以外的所有测试.我说我的程序执行时间超过4000毫秒.我猜数组很长,副本就在最后.如何减少执行时间?提前致谢.

python algorithm list duplicates

3
推荐指数
1
解决办法
2831
查看次数