用整数生成数字列表并将其移动到Python 2.7
我试图使包含在值内的整数从最左边移到最右边。例如,如果在运行代码后值为[1,2,3,4,5],则它将为[2,3,4,5,1] 我设法写了代码,但我知道如何使值从最右边移到最左边,这是另一种方式。比如[5,1,2,3,4]。 坐了好几个小时想弄明白,有人吗?多谢各位用整数生成数字列表并将其移动到Python 2.7,python,list,Python,List,我试图使包含在值内的整数从最左边移到最右边。例如,如果在运行代码后值为[1,2,3,4,5],则它将为[2,3,4,5,1] 我设法写了代码,但我知道如何使值从最右边移到最左边,这是另一种方式。比如[5,1,2,3,4]。 坐了好几个小时想弄明白,有人吗?多谢各位 values = [1,2,3,4,5] temp = values[len(values) - 1] for index in range(len(values) - 1, 0, -1): values[index] =
values = [1,2,3,4,5]
temp = values[len(values) - 1]
for index in range(len(values) - 1, 0, -1):
values[index] = values[index - 1]
values[0] = temp
print values
在您的情况下,不需要知道列表的长度 您可以只使用列表切片:
values[1:] + values[:1]
示例:
In [8]: values = [1,2,3,4,5]
In [9]: values[1:] + values[:1]
Out[9]: [2, 3, 4, 5, 1]
使用切片连接最容易实现这种旋转:
def rotate(lst, n):
n = n % len(lst) # allows rotations beyond length
return lst[n:] + lst[:n]
> rotate([1,2,3,4,5], 1) # rotate forward
[2, 3, 4, 5, 1]
> rotate([1,2,3,4,5], -2) # rotate backward
[4, 5, 1, 2, 3]
但是,正在修复原始代码:
temp = values[0] # store the first value cause it'll be overwritten in loop
for index in range(len(values) - 1):
values[index] = values[index + 1] # shift values to the left
values[len(values) - 1] = temp # write former first to last
您可以使用可变性在列表中循环,如下所示:
def cycle(input_list):
list_copy = input_list[:]
list_copy.append(list_copy.pop(0))
return list_copy
# Output
>>> input_ist = [i for i in range(1, 6)] # Same as [1,2,3,4,5]
>>> cycle(input_list)
[2, 3, 4, 5, 1]
你确定你没有撒谎,而且代码实际上来自于?@StefanPochmann,这种代码在这类问题上很常见。@RoadRunner好吧,我用谷歌搜索了
索引…
行,谷歌只找到了一个,就是我展示的。这是一个字节一个字节的四行代码。但我之所以称之为BS,最原始也是最主要的原因是他们不可能写出上面的版本,而且“几个小时”都试图写出另一个方向,但没有成功,因为它的工作原理完全相同(实际上稍微简单一点,因为范围
向上更好)。是的。我说这很常见,因为我的数据库中有几乎相同的代码。哦,好吧。我想我希望他能找到答案。这只是你评论的方式,我觉得很搞笑。