在python中操作列表
Posted
技术标签:
【中文标题】在python中操作列表【英文标题】:manipulate list in python 【发布时间】:2019-09-24 10:19:05 【问题描述】:我正在做一个 python 挑战,我不能更进一步...... 我需要验证向量中的数字是否是素数。 喜欢:
矢量 = [2,5,12] 2 是素数(真) 5 是素数(真) 12 不是素数(FALSE)这是我到目前为止的代码:
vetor = [ ]
def is_prime():
x = vetor
if x == 1:
return False
elif x == 2:
return True
for i in range(x):
if (x % i) != 0:
return True
else:
return False
def number():
value = int(input('Write an integer number bigger than 1: '))
if value >= 1:
vetor.append(value)
return number()
elif value < 0:
return number()
elif value == 0:
return is_prime()
print(number())
但是这样做,Python 会返回: TypeError: 'list' 对象不能被解释为整数
我可以做些什么来处理我列表中的数据?
【问题讨论】:
您已经定义了vetor = [ ]
,它是一个list
数据类型和x = vetor
,当您将list
与integer
数据类型在if x == 1:
和@987654328 中进行比较时,它们会发生冲突@。您需要遍历x
列表中的每个元素并进行比较测试,即for i in x: if i == 1:
等。
【参考方案1】:
试试这个:
vetor = [ ]
def is_prime(x):
if x == 1:
return False
elif x == 2:
return True
for i in range(1, x):
if (x % i) != 0:
return True
else:
return False
def number():
value = int(input('Write an integer number bigger than 1: '))
if value >= 1:
vetor.append(value)
return number()
elif value < 0:
return number()
elif value == 0:
for x in vetor:
if is_prime(x):
print(x, 'is prime')
else:
print(x, 'is not prime')
print(number())
【讨论】:
【参考方案2】:您尝试根据整数(数据类型)值(1 或 2)评估“整个”列表(数据类型)的值,然后您再次使用整个列表,因为它是单个整数值.您应该处理列表中的每个值并单独检查。
例如,您可以使用 for-each 循环来做到这一点:
for value in vetor:
#do wahtever you want with 'value'
【讨论】:
【参考方案3】:我建议让is_prime
接受一个整数作为参数。那么它只是一个接受整数并输出布尔值的纯函数。
我还注意到您的 is_prime 实现中存在问题。在您的if
-else
语句中,无论在该语句中发生什么,该函数都会返回,因此 for 循环将始终在仅一次迭代后停止。如果您检查的除数中的 所有 个除数除以数字,则您应该只返回 False:
import math
def is_prime(n):
if n <= 1:
return False
for d in range(2, int(math.sqrt(n))+1):
if n % d == 0:
return False
return True
# >>> is_prime(7)
# True
# >>> is_prime(8)
# False
我还认为迭代编写程序会更清晰,而不是递归(您的 number 函数当前调用自身)。这可能看起来像
vector = []
while True:
value = int(input('Write an integer bigger than 1: '))
if value == 0:
break
elif value > 0:
vector.append(value)
for n in vector:
print(n, is_prime(n))
# prints something like:
#
# 1 False
# 2 True
# 11 True
【讨论】:
以上是关于在python中操作列表的主要内容,如果未能解决你的问题,请参考以下文章