在Python中重新排列值在列表中的位置,而无需编写重复而繁琐的代码

时间:2018-08-30 10:41:51

标签: python

所以我做了一个列表,我试图在不写我注释掉的长代码的情况下切换值在列表中的位置:

list = [23,5,3,1,34,5]
print(list)

#list[0],list[5] = list[5],list[0]

l = len(list)
for i in range( 1 // 2 ):
    list[i],list[l-i-1] = list[l-i-1],list[i]
print(list)

当我运行代码时,它将以相同的顺序打印相同的列表。如何在不编写冗长乏味的代码的情况下以切换值的方式对其进行编码?

2 个答案:

答案 0 :(得分:1)

for i in range( 1 // 2 ): <-即数字1,而不是字母l。您需要为变量使用更清晰的名称。实际上,您不需要在索引中使用l,因为所有list[-x] == list[len(list) - x]都使用1 <= x <= len(list)

lst = [23,5,3,1,34,5]

for index in range( len(lst) // 2 ):
    lst[index], lst[-index-1] = lst[-index-1], lst[index]
print(lst)

答案 1 :(得分:0)

FHTMichell的答案可以修复您的代码,但是如果您只想反转列表,则有两种更简单的方法:

lst[::-1]

或:

lst.reverse()

两者都给出:

[5, 34, 1, 3, 5, 23]

为什么?

.reverse方法仅内置于list对象中,而[::-1]切片利用了切片语法:

[start : stop : step]

因此,如果我们将startstop保留为默认值(列表的结尾),并将step设置为-1,那么我们得到的列表将相反。