使用不带内置函数的append-remove方法在数组Python中反转列表
我正在尝试使用append和remove方法反转列表。但是我的解决方法有一个问题。也许有人能给我一个更好的解释使用不带内置函数的append-remove方法在数组Python中反转列表,python,reverse,Python,Reverse,我正在尝试使用append和remove方法反转列表。但是我的解决方法有一个问题。也许有人能给我一个更好的解释 list_in_order = [1,2,3,4,5,6] def reverse(list): r=[] for i in list: print (i) r.append(i) list_in_order.remove(i) return r print(reverse(list_in_order)) 不能
list_in_order = [1,2,3,4,5,6]
def reverse(list):
r=[]
for i in list:
print (i)
r.append(i)
list_in_order.remove(i)
return r
print(reverse(list_in_order))
不能使用
list.append
,因为它会附加到列表的末尾。您想要的是附加到列表的开头。为此,请使用列表。插入。有关更多详细信息,请参阅
另一个选择当然是使用
在你的问题中对守则提出一些建设性的批评
除非您真的打算使用全局变量,否则不要引用函数之外的变量<代码>按顺序列出。remove(i)
指的是全局变量,而不是函数参数(尽管在本例中它们最终指的是同一事物)。这可能是一个打字错误,但值得指出的是,它并不完全正确
不要使用隐藏内置类型的变量名<代码>列表
,目录
,元组
,集合
等。。。这些不是变量的好名称,因为它们将隐藏这些类型,使其无法在变量所在的范围内进一步使用,并且可能很难找到导致错误的来源
None
,或者创建一个新集合并返回该集合你想要[6,5,4,3,2,1]作为结果吗? 如果是这样,只需使用
按顺序列出[:-1]
如果必须使用“附加”和“删除”
list_in_order = [1,2,3,4,5,6]
def reverse_list(target_list):
copied_list = target_list.copy()
r=[]
for i in reversed(target_list):
r.append(i)
copied_list.remove(i)
return r
- 不要在循环中删除列表元素
- 不要对变量/参数名称使用“列表”
- 我会这样做:
list_in_order = [1,2,3,4,5,6]
def reverse(list):
counter = len(list)
for i in range(0,counter/2):
print(i)
list[i],list[counter-i] = list[counter-i], list[i]
return list
print(reverse(list_in_order))
这是一种方法,但您可以使用递归来实现:)不要从原始列表中删除元素,只需构建一个新列表。在遍历列表时,您正在从列表中删除元素。这永远不会有好结果。此外,不要将变量命名为
list
。这违反了一条基本的编程规则——不要修改正在迭代的数组(列表)。此外,如果要从开始到结束和反向遍历列表,则需要转到另一个方向。
>>> [1,2,3,4,5,6][::-1]
[6, 5, 4, 3, 2, 1]
list_in_order = [1,2,3,4,5,6]
def reverse_list(target_list):
copied_list = target_list.copy()
r=[]
for i in reversed(target_list):
r.append(i)
copied_list.remove(i)
return r
list_in_order = [1,2,3,4,5,6]
def reverse(list):
counter = len(list)
for i in range(0,counter/2):
print(i)
list[i],list[counter-i] = list[counter-i], list[i]
return list
print(reverse(list_in_order))