如何使用无返回函数修改列表元素
How to modify the list elements with using no returning function
真的很抱歉我的英语不好,
我做了两个函数来不断修改(实际上是一个一个地删除)列表中的元素并在最后显示最后一个元素,但是删除函数对我要修改的列表没有影响.
我认为这是一个关于局部变量和列表可变性的问题,但我不知道如何解决它。
首先,我给出一个列表作为我创建的函数之一的参数,删除函数。移除函数移除元素,直到它只有一个元素使用其他函数。在该函数中,我将我的另一个函数(我将调用此检查函数)放入。检查函数检查要删除的元素,并且 'actually' 在我的代码中删除了一个元素,但 return 什么也没有。
请注意 x 和 y 变量是 seq 长度范围内的随机值(我没有在我的示例代码中写这个),
每次在删除函数的while循环中都会改变它们。
import random
def checking(x, y, seq):
positions = [x, y]
positions.sort()
if seq[x] == 'b' and seq[y] == 'b':
seq.pop(positions[1])
seq.pop(positions[0])
seq.append('a')
else:
seq.pop(positions[1])
seq.pop(positions[0])
seq.append('b')
def removing(seq):
while len(seq) != 1:
x, y = random1, random2
remove(x, y, list(seq))
return seq[0]
final(['a','a','b','a','b'])
我测试了检查功能,所以我认为这是删除功能的问题。
我希望列表 seq 每次通过 'remove' 函数都会修改,最后 return 最后一个元素,但没有任何改变并陷入无限循环。
感谢您阅读我的问题。
list(seq)
创建一个新列表实例,其中的项目是 seq
项目的浅表副本。
while
循环永远不会因此而终止,因为列表永远不会清空。
将相同的 seq
传递给 remove
函数,而不是创建新的列表实例。
remove(x, y, seq)
当给定参数是元组时,在进入循环之前将其转换为可变列表:
seqm = list(seq)
while len(seqm) != 1:
x, y = random1, random2
remove(x, y, seqm)
return seqm[0]
真的很抱歉我的英语不好,
我做了两个函数来不断修改(实际上是一个一个地删除)列表中的元素并在最后显示最后一个元素,但是删除函数对我要修改的列表没有影响.
我认为这是一个关于局部变量和列表可变性的问题,但我不知道如何解决它。
首先,我给出一个列表作为我创建的函数之一的参数,删除函数。移除函数移除元素,直到它只有一个元素使用其他函数。在该函数中,我将我的另一个函数(我将调用此检查函数)放入。检查函数检查要删除的元素,并且 'actually' 在我的代码中删除了一个元素,但 return 什么也没有。
请注意 x 和 y 变量是 seq 长度范围内的随机值(我没有在我的示例代码中写这个), 每次在删除函数的while循环中都会改变它们。
import random
def checking(x, y, seq):
positions = [x, y]
positions.sort()
if seq[x] == 'b' and seq[y] == 'b':
seq.pop(positions[1])
seq.pop(positions[0])
seq.append('a')
else:
seq.pop(positions[1])
seq.pop(positions[0])
seq.append('b')
def removing(seq):
while len(seq) != 1:
x, y = random1, random2
remove(x, y, list(seq))
return seq[0]
final(['a','a','b','a','b'])
我测试了检查功能,所以我认为这是删除功能的问题。
我希望列表 seq 每次通过 'remove' 函数都会修改,最后 return 最后一个元素,但没有任何改变并陷入无限循环。
感谢您阅读我的问题。
list(seq)
创建一个新列表实例,其中的项目是 seq
项目的浅表副本。
while
循环永远不会因此而终止,因为列表永远不会清空。
将相同的 seq
传递给 remove
函数,而不是创建新的列表实例。
remove(x, y, seq)
当给定参数是元组时,在进入循环之前将其转换为可变列表:
seqm = list(seq)
while len(seqm) != 1:
x, y = random1, random2
remove(x, y, seqm)
return seqm[0]