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

时间:2019-06-08 22:01:12

标签: python list casting

我想将元素转换为列表(字符串到整数) 找不到我的错误是什么。我刚得到琴弦。 其他一些帖子的答案建议使用列表理解,但是,作为一个新手,我更喜欢在学习列表理解之前理解为什么这种更基本的方法行不通。

感谢您的帮助。

(使用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)

我希望type(listNumbers [0])或任何索引号返回整数 但是输出仍然是字符串。

5 个答案:

答案 0 :(得分:1)

您必须这样做:

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)的结果。

答案 1 :(得分:0)

问题出在您没有在循环中存储整数的事实!

要做:

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

最好的解决方案是

listNumbers = list(map(int, listNumbers))

答案 2 :(得分:0)

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'>

答案 3 :(得分:0)

您需要将修改后的值实际保存回列表中

for i,val in enumerate(my_list):
    my_list[i] = int(val)

但是如上所述,仅使用列表理解会更好

new_list = [int(val) for val in my_list]

答案 4 :(得分:0)

您的第一个变体没有任何作用,因为强制转换值已被丢弃。

您的第二个变量确实将值分配给i,但这不会更改列表中存储的值。

我建议改用列表理解:

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