def prepare_for_sort(st):
nums = str(st).split()
for each in nums:
each = int(each)
print(nums)
st是一个数字字符串,如" 20 50 4 8 4 64 6 47 8"。 Nums必须是整数数组。为什么这不起作用?
答案 0 :(得分:0)
这不起作用,因为您的变量each
是对某个对象的引用:首先,对于同样包含在列表中的对象,然后是整数对象。但是,each
绝不会与您要操作的内容列表相关联。
您可以就地操作列表:
for index, value in enumerate(nums):
nums[index] = int(value)
或者您可以改为创建新列表:
nums = [int(value) for value in nums]
答案 1 :(得分:0)
正如您目前所拥有的那样,您正在尝试从for循环内部修改列表中的值,但这不起作用,因为您只是重新分配变量{{1在for循环中。 for循环将简单地丢弃此值,以便将each
分配给列表中的下一个项目。您对each
所做的任何更改都将被废弃,因为它们完全独立于each
列表。
您实际上可以通过列表理解来实现目标。
nums
或者如果你真的想在循环中这样做。您可以使用循环索引,以便实际修改列表。
nums = "20 50 4 8 4 64 6 47 8"
actual_nums = [int(n) for n in nums.split()]
答案 2 :(得分:0)
如果您可以以任何方式避免它,在您循环播放列表时不要修改列表的元素。它只会让你陷入困境。 相反,试试这个:
def prepare_for_sort(st):
nums = str(st).split()
new_nums = []
for each in nums:
new_nums.append(int(each))
print(new_nums)
或者,甚至更短,使用列表理解:
def prepare_for_sort(st):
nums = str(st).split()
new_nums = [int(x) for x in nums]
print(new_nums)
答案 3 :(得分:0)
试试这个:
def prepare_for_sort(st):
nums = str(st).split()
arrNums = [int(each) for each in nums]
return arrNums
当然,您需要确保函数接收的字符串始终只有整数和空格。