Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:int对象在尝试将int强制转换为list时不可编辑_Python - Fatal编程技术网

Python:int对象在尝试将int强制转换为list时不可编辑

Python:int对象在尝试将int强制转换为list时不可编辑,python,Python,尝试检查值是否为list,然后将此列表转换为逗号分隔的字符串,否则按原样使用值: 但是有错误:“int”对象是不可编辑的 如果val=[1,2],则v=1,2Python在那里不是惰性的,因此无论访问什么值,都会执行连接。为什么不呢 if isinstance(val, list): val = ",".join(map(str, val)) ?Python并不懒惰,因此无论访问什么值,都会执行连接。为什么不呢 if isinstance(val, list): val = "

尝试检查值是否为list,然后将此列表转换为逗号分隔的字符串,否则按原样使用值:

但是有错误:“int”对象是不可编辑的


如果val=[1,2],则v=1,2

Python在那里不是惰性的,因此无论访问什么值,都会执行连接。为什么不呢

if isinstance(val, list):
    val = ",".join(map(str, val))

Python并不懒惰,因此无论访问什么值,都会执行连接。为什么不呢

if isinstance(val, list):
    val = ",".join(map(str, val))

根据您的需求,您可以创建如下功能:

def get_value(x):
    return ','.join(map(str, x)) if isinstance(x, list) else x
    #                ^ To type-cast each element of list to a string
样本运行:

>>> get_value(123)
123
>>> get_value([1, 2, 3])
'1,2,3'
但是,我建议使用collections.Iterable来检查对象类型,它将为所有迭代器(如list、tuple、string等)返回True,而不仅仅是list。因此,您的功能应该是:

from collections import Iterable

def get_value(x):
    return ','.join(map(str, x)) if isinstance(x, Iterable) else x

根据您的需求,您可以创建如下函数:

def get_value(x):
    return ','.join(map(str, x)) if isinstance(x, list) else x
    #                ^ To type-cast each element of list to a string
样本运行:

>>> get_value(123)
123
>>> get_value([1, 2, 3])
'1,2,3'
但是,我建议使用collections.Iterable来检查对象类型,它将为所有迭代器(如list、tuple、string等)返回True,而不仅仅是list。因此,您的功能应该是:

from collections import Iterable

def get_value(x):
    return ','.join(map(str, x)) if isinstance(x, Iterable) else x

问题是map有这个签名mapfunction,iterable


这意味着第二个参数必须是iterable type->int不是iterable,这就是为什么会出现错误。

问题是map有这个签名映射函数,iterable


这意味着第二个参数必须是iterable type->int不是iterable,这就是为什么会出现错误。

val=1如何,这将使它成为tuplet问题是,您的tuple首先预计算这两个选项,而映射操作对int失败。这是一种过时的、不太可读的方法,请使用if-else,或者三元运算符,而不是索引boolA位OT,但如果val是元组、集合或任何其他iterable呢?当val类似于[1,2]或['test,test2`]时,我使用list检查值是否为list,然后将此列表转换为逗号分隔的字符串,但现在要做的是,首先转换为逗号分隔的字符串,然后你检查它是否是一个列表,因此出现了错误。val=1如何,这将使它成为tuplet问题是,你的tuple首先预计算了两个选项,而映射操作对于int失败。这是一种比较古老且不太可读的方法,使用if-else,或者三元运算符,而不是索引boolA位OT,但如果val是元组、集合或任何其他iterable呢?当val类似于[1,2]或['test,test2`]时,我使用list检查值是否为list,然后将此列表转换为逗号分隔的字符串,但现在要做的是,首先转换为逗号分隔的字符串,然后你检查它是否是一个列表,因此出现错误。。[]像简短的if-else表达式一样,使用“,”。joinmapstr,x if-isinstancex,list-else x解决了我的问题尝试了。。[]与简短的if-else表达式类似,使用“,”。joinmapstr,x if-isinstancex,list-else x解决了我的问题如果val是int,它将不起任何作用,因为那么val不是list的实例。如果val是int,它将保持不变;如果它是列表,它将更改为逗号分隔的字符串。或者执行此操作时是否会出错?如果val是int,则不会执行任何操作,因为val不是list的实例。如果val是int,它将保持不变;如果它是列表,它将更改为逗号分隔的字符串。或者执行此操作时会出现错误?