相关疑难解决方法(0)

Python中集差函数的运行时间是多少?

这个问题解释了它,但是Python中的集差运算的时间复杂度是多少?

前任:

A = set([...])
B = set([...])

print(A.difference(B)) # What is the time complexity of the difference function? 
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我,O(n)因为我们可以遍历集合 A 并且对于每个元素,查看它是否在恒定时间内(使用哈希函数)包含在集合 B 中。

我对吗?

(这是我遇到的答案:https : //wiki.python.org/moin/TimeComplexity

python set

5
推荐指数
1
解决办法
6457
查看次数

有没有人真正知道如何在Python中确定集合的顺序?

似乎有一些一致性,因为调用set()字符串似乎总是解析为相同的(非alabetical)顺序,并且两者都是

set([1,2,3]) & set([1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

和它的表兄弟混在一起

set([2,3,1]) & set([4,3,1,2])
Run Code Online (Sandbox Code Playgroud)

将导致有序的set([1,2,3]).

另一方面,有点像racy,比如

from random import randint
set([randint(0,9) for x in range(3)])
Run Code Online (Sandbox Code Playgroud)

有时会给set([9, 6, 7])...

... 这里发生了什么?

python implementation cpython unordered-set

4
推荐指数
1
解决办法
98
查看次数

在查找成员资格时,Set比列表快得多

如何设置查找元素比列表快得多,是否与列表中的有序维护有关?或者查找算法的集合是否与列表不同?

>>> from timeit import Timer    
>>> Timer("100042 in L", "L=range(100000)").timeit(number=10000)
21.69940710067749
>>>
>>> Timer("100042 in S", "S=set(range(100000))").timeit(number=10000)
0.0006740093231201172
>>>
Run Code Online (Sandbox Code Playgroud)

有人请求指出两者之间使用的链接或算法吗?

python list set

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

为什么嵌套字典可以,但嵌套集禁止?

为什么Python中允许使用嵌套字典,而不允许使用嵌套集?

人们可以嵌套字典并动态更改子字典,如下所示:

In [1]: dict1 = {'x':{'a':1, 'b':2}, 'y':{'c':3}}
In [2]: dict2 = {'x':{'a':1, 'b':2}, 'y':{'c':3}}
In [3]: dict1 == dict2
Out[3]: True
In [4]: dict2['x'] = {'d':4}
In [5]: dict1 == dict2
Out[5]: False
Run Code Online (Sandbox Code Playgroud)

另一方面,如果你试图在一个集合中放置一个集合,你会收到一个错误,说它无法完成,因为集合是一个"不可用的类型":

In [6]: set([set(['a'])])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-8e7d044eec15> in <module>()
----> 1 set([set(['a'])])

TypeError: unhashable type: 'set'
Run Code Online (Sandbox Code Playgroud)

但这也没有意义,因为字典也是不可用的,

In [7]: hash({'a':1})
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-44def9788331> in <module>()
----> 1 hash({'a':1})

TypeError: unhashable type: 'dict' 
Run Code Online (Sandbox Code Playgroud)

当然,可以将一个冷冻集放在一个集合中, …

python dictionary hashtable set

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

Python list.append如果不在列表中而不是set.add性能

哪个更高效,Python中的渐近复杂度(或它们是等价的)是什么?

set.add(12)

if 12 not in somelist:
    somelist.append(12)
Run Code Online (Sandbox Code Playgroud)

python

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

如何有效地比较Python中的大型列表?

我试图找到9个字母的单词,当你平均分成3个部分,然后乱七八糟地,你会得到另一个9个字母的单词.

for i in nineWordList:
    for j in nineWordList:
        if (i[3:5] + i[0:2] + i[6:8]) == j:
            correctWords.append(i)
        elif (i[3:5] + i[6:8] + i[0:2]) == j:
            correctWords.append(i)
        elif (i[0:2] + i[6:8] + i[3:5]) == j:
            correctWords.append(i)
        elif (i[6:8] + i[0:2] + i[3:5]) == j:
            correctWords.append(i)
        elif (i[6:8] + i[3:5] + i[0:2]) == j:
            correctWords.append(i)
Run Code Online (Sandbox Code Playgroud)

我就是这样做的.唯一的问题是nineWordList长68,000个元素,这需要很长时间.我怎样才能提高它,使其更有效率?

python algorithm list processing-efficiency

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

用Python中的元素列表搜索列表字典的优化方法

我正在尝试在列表中搜索第一次出现的字典。我创建的逻辑适用于小数据,但我有一个一百万行的列表,其他要搜索的列表元素有 1000 个元素。

data = [{'team': 'a', 'id':11}, {'team': 'b', 'id':111}, {'team': 'c', 'id':1111}]
list_to_see = ['a','c']
check = None
for index in range(len(data)):
    if data[index]['team'] in list_to_see[index]:
        check = data[index]['id']
        break
print(check)
Run Code Online (Sandbox Code Playgroud)

#Output: 11

所以,我得到了第一个元素 Id,这正是我想要的结果。是否有任何优化的方法可以获得可以处理大数据的相同输出?谢谢

python python-3.x

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

zip 操作是否能保留顺序?

我正在阅读 geeksforgeeks 的以下示例:

# Python code to demonstrate the working of  
# zip() 
  
# initializing lists 
name = [ "Manjeet", "Nikhil", "Shambhavi", "Astha" ] 
roll_no = [ 4, 1, 3, 2 ] 
marks = [ 40, 50, 60, 70 ] 
  
# using zip() to map values 
mapped = zip(name, roll_no, marks) 
  
# converting values to print as set 
mapped = set(mapped) 
  
# printing resultant values  
print ("The zipped result is : ",end="") 
print (mapped) 
Run Code Online (Sandbox Code Playgroud)

但如果你看到结果:

压缩结果为:{('Shambhavi', 3, 60), ('Astha', 2, …

python

0
推荐指数
1
解决办法
715
查看次数