Python 查找出现在两个不同列表中的唯一编号

Python 查找出现在两个不同列表中的唯一编号,python,string,set,Python,String,Set,我有以下代码: list1 = input() list2 = input() unique = list(set(list1).intersection(list2)) print(len(unique)) 我想找出两个列表中出现的唯一数字。 但是,当我输入列表[1,2,3,4,5,6]和[6,5,4,3,2,1]时,它返回7,而不是6 当我将代码编辑为: list1 = [1,2,3,4,5,6] list2 = [6,5,4,3,2,1] unique = list(set(list1)

我有以下代码:

list1 = input()
list2 = input()
unique = list(set(list1).intersection(list2))
print(len(unique))
我想找出两个列表中出现的唯一数字。 但是,当我输入列表[1,2,3,4,5,6]和[6,5,4,3,2,1]时,它返回7,而不是6

当我将代码编辑为:

list1 = [1,2,3,4,5,6]
list2 = [6,5,4,3,2,1]
unique = list(set(list1).intersection(list2))
print(len(unique))


它正确地输出6。我的用户输入代码中发生了什么

您没有将第二个输入转换为集合

我会把它写在下面:

set1 = set(input())
set2 = set(input())
unique = list(set1.intersection(set2))
print(len(unique))

因为在使用
input
时,输入被转换为字符串,通过构造
,您将得到:

list1 = '1,2,3,4,5,6'
print(set(list1))
# {',', '1', '2', '3', '4', '5', '6'}
list2 = '6,5,4,3,2,1'
set(list2)
# {',', '1', '2', '3', '4', '5', '6'}
包括逗号,导致:

list(set(list1).intersection(list2))
# [',', '1', '6', '5', '3', '4', '2']

输入返回一个字符串,您必须先强制转换或更好地解析它

一个选项是json,例如

import json
def parse():
   return json.loads(input())


list1 = parse() #"[1,2,3,4,5,6]" parsed to [1,2,3,4,5,6]
list2 = parse() #"[6,5,4,3,2,1]" parsed to [6,5,4,3,2,1]
unique = list(set(list1).intersection(set(list2)))
print(len(unique))
显然,您可以使用
eval(input()
),但这并不安全,因为它允许执行任意代码

def parse():
    ip = input()
    return [int(element) for element in ip.split(',')]
list1 = parse() #"1,2,3,4,5,6" parsed to [1,2,3,4,5,6]

是的。这就是当您使用错误的变量名(
list1
,它根本不是
列表)时会发生的错误。如何从计数中删除逗号?@mcdobae
set(int(x)表示列表1中的x。拆分(','))