我正在尝试使用Python 3.3.2中的列表创建一个查找素数的程序。我要做的是从ns
中取出一个元素并将其除以b
中的所有元素。
这就是我所拥有的(不起作用):
b = [1]
ns = [1]
while 1 == 1:
if ns[-1] / b[:] == 1 or ns[-1]:
print (ns[-1])
ns.append(ns[-1]+1)
b.append(b[-1]+1)
else:
print ("No prime found.")
这是我收到的错误:
if ns[-1] / b[:] == 1 or ns[-1]:
TypeError: unsupported operand type(s) for /: 'int' and 'list'
我理解为什么这个操作是不可能的(将列表中的整数元素除以另一个整个列表也不起作用)并且想知道是否有任何方法可以实现我的目标。
感谢您的帮助。
答案 0 :(得分:0)
您不能分割整数和列表。你能做的就是使用列表理解。演示:
>>> ns = [1,2,3]
>>> b= [7,9,12,13]
>>> # divide last element of ns by all elements of b
...
>>> [float(ns[-1])/item for item in b if item]
[0.42857142857142855, 0.3333333333333333, 0.25, 0.23076923076923078]
新列表的第一个元素是3/7,第二个元素是3/9,依此类推。 if item
检查是为了确保您不会除以零。
编辑:你实际上可能意味着一些不同的东西,即将ns
中的一个元素连续划分为b
中的每个元素。 ns[-1]
的演示:
>>> ns = [1,2,3]
>>> b = [1,2,3]
>>> sol = ns[-1]
>>> for item in b:
... sol = float(sol)/item
...
>>> sol
0.5
sol是((3/3)/ 2)/ 1
此外,您的while
循环永远不会结束。你确定要的吗?