You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

int、input()与int(input())的区别及代码报错原因咨询

两种map写法的区别及报错原因

问题核心:搞懂map函数的调用逻辑

map函数的标准调用格式是**map(处理函数, 可迭代对象)**——第一个参数是要执行的函数(比如int),第二个参数是待遍历的可迭代对象(比如列表),它会把可迭代对象的每个元素依次传给处理函数转换。


正确写法的执行逻辑

list(map(int, input("Enter first array: ").split()))
  1. input("Enter first array: ").split():用户输入的字符串(如"1 2 3")被split()按空格分割成字符串列表["1", "2", "3"],这是一个合法的可迭代对象。
  2. map(int, ["1", "2", "3"]):map遍历列表中的每个字符串,分别传给int()函数转成整数,得到包含1、2、3的迭代器。
  3. list(...):把迭代器转换成最终的整数列表[1, 2, 3]。

错误写法的问题所在

list(map(int(input("Enter first array: ").split())))

括号位置错误导致执行逻辑完全走偏:

  1. 先执行input("Enter first array: ").split()得到列表["1", "2", "3"]。
  2. 紧接着执行int(["1", "2", "3"]):试图把整个列表传给int()函数,但int()只能接收字符串、字节类对象或数字,根本不支持列表类型,这直接触发了报错信息里的TypeError。
  3. 退一步说,就算int()能处理列表,map()里只传入了一个参数(int()的返回值),而map要求至少两个参数(处理函数+可迭代对象),后续也会触发参数不足的错误。

错误代码示例

def Union(arr1, arr2):
    res = list(set(arr1) | set(arr2))
    return sorted(res)
 
arr1 = list(map(int(input("Enter first array: ").split())))
arr2 = list(map(int(input("Enter second array: ").split())))
print(Union(arr1, arr2))

报错信息

Enter first array: 1 2 3
Traceback (most recent call last):
  File "main.py", line 6, in <module>
    arr1 = list(map(int(input("Enter first array: ").split())))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

正确代码示例

def Union(arr1, arr2):
    res = list(set(arr1) | set(arr2))
    return sorted(res)
 
arr1 = list(map(int,input("Enter first array: ").split()))
arr2 = list(map(int,input("Enter second array: ").split()))
print(Union(arr1, arr2))

内容的提问来源于stack exchange,提问作者beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:45:39