Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我不能像从列表中一样从元组中删除项?_Python_Itertools - Fatal编程技术网

Python 为什么我不能像从列表中一样从元组中删除项?

Python 为什么我不能像从列表中一样从元组中删除项?,python,itertools,Python,Itertools,我通过创建排列生成了一个数字列表。我现在正试图从这个列表中删除非素数 import itertools from sympy import isprime values = list(itertools.permutations([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 4)) def removeNonPrimes(items): return [p for p in items if isprime(p)] primes = removeNonPrimes

我通过创建排列生成了一个数字列表。我现在正试图从这个列表中删除非素数

import itertools
from sympy import isprime

values = list(itertools.permutations([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 4))

def removeNonPrimes(items):
    return [p for p in items if isprime(p)]

primes = removeNonPrimes(values)       
print primes
但是,当我试图创建一个只包含素数的新列表时,我得到以下错误:

TypeError: int() argument must be a string or a number, not 'tuple'

为什么这是一个元组而不是一个列表?不过,为什么我不能像删除列表一样从元组中删除项呢?

根据定义,元组是不可变的。您可以转换为列表,删除内容,然后根据需要转换回元组。此外,“值”是一个列表,但它是一个元组列表。转换为列表列表的简单方法:

values=[list(x) for x in values]

是一个包含
元组
对象的列表,看起来像
(0,1,2,3)
。这就是传递给
isprime(p)
p
,这就是引发错误的原因。我不使用
sympy
,所以我只能推测,
isprime
可能需要一个整数而不是元组,因为传递给
isprime
的任何东西都在
p
上调用
int(…)
,而不是生成一个数字列表。您正在生成一个数字元组列表
(5,4,7,1)
不是
5471
。您应该打印(值)以查看错误的位置。这表示为。你的最终目标是什么?所有从0到1000的素数都有不重复的数字(包括前导零)?在这种情况下,我的最终目标是得到我所问问题的答案。我不想让任何人帮我解决这个问题。这解决了主题行中的问题,而不是OP的问题……这几乎肯定不会解决根本问题。相反,错误现在将是
TypeError:int()参数必须是字符串或数字,而不是“list”
嗯,这就是他问的问题。如果他编辑了这个问题,我很乐意更新。这可能值得一提:他的实际问题与从列表或元组中删除项目无关。你的答案与当前的问题无关。我现在理解了这个问题,我将使用“值”将其转化为这个特定问题的整数列表。我也知道元组现在是不可变的。我不喜欢在我的问题上得到否定的分数——我仍然相信这是一个我想要回答的有效问题,这将影响我是否选择在代码中继续使用元组。