Python错误:TypeError:不可用类型:尝试循环列表时的'list'

时间:2016-11-18 18:09:44

标签: python list set

我正在尝试遍历字符串列表,跳过前两个字符串,然后将1替换为列表中其余字符串中的''

stringList = {['abc', 'def', 'ghi1', 'jkl1']}
xx = [col.replace('1', '') for col in stringList if col not in stringList[1:2]]
print(xx)

我的代码抛出此错误:

  

TypeError:不可用类型:'list'

我希望xx等于以下列表:'ghi''jkl'

我该怎么做?

2 个答案:

答案 0 :(得分:2)

在Python中,集合必须包含可清除的元素(请参阅Python glossary)。列表不可清除,但是元组是。如果它仍然符合您的目的,您可以使用元组而不是列表:

stringList = {('abc', 'def', 'ghi1', 'jkl1')}

您应该尝试更仔细地阅读错误消息。错误跟踪会告诉您哪条线导致错误。此外,邮件本身也在抱怨列表,在您的示例中只有2个。

答案 1 :(得分:1)

以下代码打印['ghi', 'jkl']

这就是你想要的吗?

stringList = ['abc', 'def', 'ghi1', 'jkl1']
xx = [col.replace('1', '') for col in stringList if col not in stringList[0:2]]
print(xx)

正如Martijn Pieters在评论中所说,你将一个列表['abc', 'def', 'ghi1', 'jkl1']放在一个集合中。

  

set对象是不同的hashable对象的无序集合。   常见用途包括成员资格测试,从中删除重复项   序列,并计算数学运算,如交集,   联合,差异和对称差异。

Python Set Documentation