Python查找不在集合中的数字
我有一系列的数字,比如1-100。我有一个集合,它包含这个范围内的所有数字或随机数字子集,比如:Python查找不在集合中的数字,python,set,range,difference,Python,Set,Range,Difference,我有一系列的数字,比如1-100。我有一个集合,它包含这个范围内的所有数字或随机数字子集,比如: s = set([1,2,3,35,67,87,95]) 获取1-100范围内不在该集合中的所有数字的好方法是什么 set(range(1, 101)) - s 使用集合差分运算 set(range(1, 101)) - s 我会将集合中不包含的所有项目添加到列表中 s = set([1,2,3,35,67,87,95]) x = [] for item in range(1, 101):
s = set([1,2,3,35,67,87,95])
获取1-100范围内不在该集合中的所有数字的好方法是什么
set(range(1, 101)) - s
使用集合差分运算
set(range(1, 101)) - s
我会将集合中不包含的所有项目添加到列表中
s = set([1,2,3,35,67,87,95])
x = []
for item in range(1, 101):
if item not in s:
x.append(item)
print x
虽然丑陋,但它比设置差异更有效:
def not_in_set (s, min = 0):
'''Returns all elements starting from min not in s.
'''
n = len(s)
if n > 0:
l = sorted(s)
for x in range(min, l[0]):
yield x
for i in range(0, n - 1):
for x in range(l[i] + 1, l[i + 1]):
yield x
r = l.pop() + 1
else:
r = min
while True:
yield r
r += 1
为了查找不在另一个集合中的集合元素,可以使用set方法或使用
-
运算符()
使用差分法:
s = {1,2,3,35,67,87,95} # Set that you use as example
t = set(range(1, 101)) # Set from 1 to 100
print(t.difference(s))
>>> {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100}
也许你的意思是范围(1101)
?