使用map()将整数列表转换为字符串

3

我不明白为什么Python不允许我使用map()函数将整数列表转换为字符串列表。当我在Python Shell中尝试时,它可以正常工作,但是在脚本中尝试时就无法正常工作,这真的让我感到困惑。以下是我的脚本代码:

def DashInsert(str):

    list_int = map(int, list(str))
    list_str = map(str, list_int)

    return list_str 

此外我知道如果输入的已经是字符串,我不需要将列表转化为字符串,但是我好奇为什么在将其转换为整数列表后Python不允许我修改该列表。我一直收到“str object is not callable”错误。
1个回答

6
当您执行以下操作时:
def DashInsert(str):

你正在为 DashInsert 的作用域阴影化内置的 str 函数,因此当你尝试使用 list_str = map(str, list_int) 时,它不会按预期工作,因为 str 不再是 Python 的内置函数,而是等于你传递给函数的 str 对象。考虑将其重命名,例如:
def DashInsert(text):
    list_int = map(int, list(text))
    list_str = map(str, list_int)
    return list_str

可以,谢谢!你能否详细解释一下阴影概念? - Ridwan Kazi
1
@RidwanKazi 在赋值方面,Python相当灵活。因此,您可以执行int = float,然后执行int(3),这样您将得到float(3)而不是int(3)。一个经验法则是避免将自己的变量命名为Python内置变量的名称。 - Jon Clements
谢谢Jon,我明白了。 - Ridwan Kazi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接