【发布时间】:2018-05-01 09:14:40
【问题描述】:
我只使用 python 大约 2 周,需要一些帮助。我正在尝试在两个不同大小的列表之间使用 mod (%) 函数。
n = 23 #user input, starting point for the code
listp = [2, 3, 5, 7, 11, 13]
listr = list(range((n-1)**2, n**2+1, 2))
listb = list(listr) #I need to remove items from listr but if i do, it
#crashes so I decided to copy it to listb in order to manipulate it
for k in listr:
for i in listp[1:]:
if k%i == 0:
if k in listb:
listb.remove(k)
这可行,但速度很慢,我想直接操作 listr 并且可以单独操作:
listr = [k for k in listr if i%listp[1] !=0]
listr = [k for k in listr if i%listp[2] !=0]
底线是我想在 listr 中的每个 k 元素上使用 % 函数,使用 listp 中的每个 i 元素,并且只保留 listr 中的那些元素 !=0;我试过使用 numpy 和一个数组,但这也无济于事
【问题讨论】:
标签: python numpy iteration conditional modulo