我想将元素转换为列表(字符串到整数) 找不到我的错误是什么。我刚得到琴弦。 其他一些帖子的答案建议使用列表理解,但是,作为一个新手,我更喜欢在学习列表理解之前理解为什么这种更基本的方法行不通。
感谢您的帮助。
(使用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])或任何索引号返回整数 但是输出仍然是字符串。
答案 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]))