小编fra*_*fra的帖子

使用Python中的Modulo查找Primes

我一直在为这段代码出汗 - 它返回列表中的所有素数:

primes = range(2, 20) 
for i in range(2, 8): 
     primes = filter(lambda x: x == i or x % i, primes)

print primes
Run Code Online (Sandbox Code Playgroud)

它有效...但我不明白" x == i or x % i"在整个事情中扮演的角色.

我也不明白为什么第二个范围只有2到7.

我甚至创建了Eratosthenes筛选器的Python实现,希望这可能会给我一些见解,但事实并非如此.

当我删除x % i组件时,我希望这段代码能够给出两组共有的数字,但它不会:

nums = [2, 20] 
for i in range(2, 8): 
     nums = filter(lambda x: x == i, nums)

print nums
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

同样,当我删除x == i组件时,它返回从11到19的素数.

nums = range(2, 20) 

for i in range(2, 8): 
     nums = filter(lambda x: …
Run Code Online (Sandbox Code Playgroud)

python lambda primes sieve-of-eratosthenes modulus

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

在Python中检索单个字典元素

我想只检索词典"e"中的第四项(下面).

我尝试使用OrderedDict()方法,但它没有用.这是我的结果:

from collections import OrderedDict

e = OrderedDict()
e = {'a': 'A',
     'b': 'B',
     'c': 'C',
     'd': 'D',
     'e': 'E'
    }

for k, v in e.items():
    print k, v

print e.items()[3]
Run Code Online (Sandbox Code Playgroud)

最后一行返回:('e','E')

所以我将键和值转换为列表,但是这些列表在我打印时是如何出现的:

['a', 'c', 'b', 'e', 'd']


['A', 'C', 'B', 'E', 'D']
Run Code Online (Sandbox Code Playgroud)

对我来说,这解释了它为什么会发生,但不是如何发生的.

所以,接下来我整理了它们.这给了我正在寻找的结果 - 但它似乎不必要地复杂化:

e = {'a': 'A',
     'b': 'B',
     'c': 'C',
     'd': 'D',
     'e': 'E'
}
k, v = sorted(e.keys()), sorted(e.values())
print "{}: {}".format(k[3], v[3])
Run Code Online (Sandbox Code Playgroud)

结果:d:D

OrderedDict()不是必需的.

有更简单的方法吗?有人可以解释为什么字典中的元素是这样排序的:

keys: 'a', 'c', 'b', 'e', 'd'


values: …
Run Code Online (Sandbox Code Playgroud)

python dictionary elements sequence

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