Python列表无法将str转为int:基础循环方法失效原因咨询
为啥你的循环没法把字符串列表转成整数?
嘿,我完全懂你现在的困惑!作为Python新手,这种看似简单的变量赋值坑真的很容易踩,咱们一步步来拆解问题所在~
你的代码为啥没生效?
先看你写的两段循环:
- 第一段:
for i in listNumbers: int(i)
这里的int(i)确实把字符串i转换成了整数,但你没把这个转换后的结果存到任何地方!转换完就直接丢弃了,原列表listNumbers里的元素根本没被修改。
- 第二段:
for i in listNumbers: i = int(i)
这里的i是循环过程中创建的临时变量(更准确说,是原列表元素的副本)。你修改这个临时变量的值,并不会影响原列表里对应的元素——就像你复制了一张纸条,修改复制件不会改变原件一样。
正确的基础循环写法
要修改原列表的元素,你需要通过索引来定位到列表里的具体位置,直接修改那个位置的值:
while True: userInput = input("Write space-separated numbers: ") listNumbers = userInput.split() # 用索引遍历,直接操作原列表的对应位置 for idx in range(len(listNumbers)): listNumbers[idx] = int(listNumbers[idx]) print(type(listNumbers[0])) # 现在会输出<class 'int'>啦
这里range(len(listNumbers))会生成从0到列表长度-1的索引,然后listNumbers[idx] = int(...)直接把转换后的整数赋值给原列表的对应位置,这样原列表的元素才会被真正修改。
额外:等你理解后再学的列表推导式
当你搞懂上面的循环逻辑后,列表推导式就是更简洁的写法,本质和循环是一样的:
while True: userInput = input("Write space-separated numbers: ") listNumbers = [int(num) for num in userInput.split()] print(type(listNumbers[0]))
它把“遍历-转换-存到新列表”的过程一步完成,但先把基础循环的原理搞透,再用这个会更得心应手~
内容的提问来源于stack exchange,提问作者lljr
相关产品推荐
相关产品推荐

