为什么我不能从列表中删除元组中的项目?

时间:2017-11-20 23:28:00

标签: 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(values)       
print primes

但是,当我尝试创建仅包含素数的新列表时,我收到以下错误:

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

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

1 个答案:

答案 0 :(得分:0)

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

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