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
,它根本不是列表)时会发生的错误。如何从计数中删除逗号?@mcdobaeset(int(x)表示列表1中的x。拆分(','))
。