Python 如何解决不可损坏类型:';列表';错误
在fowling代码中,用户输入两个列表,第一个输入是一个整数Python 如何解决不可损坏类型:';列表';错误,python,list,hash,hashtable,Python,List,Hash,Hashtable,在fowling代码中,用户输入两个列表,第一个输入是一个整数(N),显示第一个列表(l1)中的元素数量,第三个输入(M)是一个整数,显示第二个列表(l2)中的元素数量 输入如下: 4 apple32 banana2 tomato3 potato 3 carrot apple32 banana2 由于apple32和banana2都在两个列表中,因此,输出应该是2,这意味着两个列表中都有两个重复的元素。我的代码出现错误:不可修复类型:“列表” N = int(input() ) l1 = [[
(N)
,显示第一个列表(l1)
中的元素数量,第三个输入(M)
是一个整数,显示第二个列表(l2)
中的元素数量
输入如下:
4
apple32
banana2
tomato3
potato
3
carrot
apple32
banana2
由于apple32
和banana2
都在两个列表中,因此,输出应该是2
,这意味着两个列表中都有两个重复的元素。我的代码出现错误:不可修复类型:“列表”
N = int(input() )
l1 = [[x for x in input().split()] for _ in range(N)]
M = int(input() )
l2 = [[x for x in input().split()] for _ in range(M)]
print(len(set(l1).intersection(l2)))
看看你的理解嵌套
l1 = [[x for x in input().split()] for _ in range(N)]
其结果是一个列表列表,每个列表包含一个字符串,例如
[['apple'], ['banana'], ['carrot']]
列表不是可散列的项;你不能用它做一套
理解力下降:
l1 = [x for x in input().split() for _ in range(N)]
。。。然后应用
juanpa
的简化。这将给您留下一个字符串列表。您可以将交叉点
直接应用于这些结构。交叉点
将集合
作为参数;你正在给它一个列表
@ScottHunter不,它需要任何iterable。无论如何,你正在尝试哈希列表,l1
是一个包含列表的列表。您尝试将其放入集合
,但列表中的对象不可散列,正如错误消息所述。不要尝试去散列列表。这就是解决办法。你为什么要这样做<代码>[[x代表输入中的x().split()]代表范围内(N)]
注意,这只是一种冗长的书写方式[input.split()代表范围内(N)]
。但你为什么要分手?您可能只需要[input()for uu in range(N)]
在任何情况下,您都应该自己调试这些小程序。StackOverflow不是调试服务。你至少要做一些研究,也许是一些调试打印,等等,然后在问题中,告诉我们你到底不明白什么