无法在python中将str强制转换为int

2024-06-29 01:12:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想强制转换列表中的元素(字符串到整数) 找不到我的错。我只是得到一些线索。 其他一些帖子的答案建议列表理解,但是,作为一个新手,我更喜欢在学习列表理解之前理解为什么这个更基本的方法不起作用。你知道吗

谢谢你的帮助。你知道吗

(使用Python 3)

我试过:

while True:
    userInput=input("Write space-separated numbers:  ")
    listNumbers=userInput.split()
    for i in listNumbers:
        int(i)
    print(type(listNumbers[0]))

也尝试过:

for i in listNumbers:
    i=int(i)

我希望类型(listNumbers[0])或任何索引号返回整数 但输出仍然是一个字符串。你知道吗


Tags: 方法字符串答案in元素列表for整数
3条回答

你必须做到:

for i in range(0, len(listNumbers)):
    listNumbers[i] = int(listNumbers[i])

或:

for idx, val in enumerate(listNumbers):
    listNumbers[idx] = value

这可以通过以下方式缩短:

listNumbers = [int(x) for x in listNumbers]

执行时:

for i in listNumbers):
    i = int(i)

i只是对元素的引用,因此不能更改列表的原始值。你知道吗

执行时:

for i in listNumbers:
    int(i)

不存储int(i)的结果。你知道吗

int(i)不会将列表中的元素i转换为整数,您需要显式地将int(i)赋回到列表中的元素才能实现此操作

while True:

    userInput=input("Write space-separated numbers:  ")
    listNumbers=userInput.split()

    #Iterate over the list and get index and element of list
    for idx, i in enumerate(listNumbers):
        #Cast string to int and assign back to list
        listNumbers[idx] = int(i)

    #Get the type
    print(type(listNumbers[0]))

输出将是

Write space-separated numbers:  1 3 5
<class 'int'>

这个问题源于您没有在循环中存储整数!你知道吗

执行:

mylist = []
for i in listNumbers:
    mylist.append(int(i))

最好的解决办法是

listNumbers = list(map(int, listNumbers))

相关问题 更多 >