作为一个Python初学者,我正在尝试这样做。我想要一个简单的函数,它以一个列表作为参数,并返回另一个列表,该列表只是原始列表旋转一次(因此rotate([1, 2, 3])
将返回[2, 3, 1]
),同时保持原始列表不变。你知道吗
我知道这个
def rotate(list):
list.append(list[0])
list.remove(list[0])
将在适当的位置更改列表(并且不返回任何内容)。你知道吗
但是这个呢
def rotate_2(list):
temp = list
temp.append(temp[0])
temp.remove(temp[0])
return temp
还将更改原来的列表(同时返回所需的列表)。你知道吗
第三个呢
def rotate_3(list):
temp = [x for x in list]
temp.append(temp[0])
temp.remove(temp[0])
return temp
给出所需的结果,即返回一个新列表,同时保持原始列表不变。你知道吗
我无法理解rotate_2
的行为。当函数只是在temp
上执行某些操作时,list
为什么会被更改?它给我一种感觉,好像list
和temp
被temp = list
连接起来。为什么rotate_3
可以?抱歉,如果我的英语很奇怪,它不是我的第一语言(不像Python)。你知道吗
在
rotate_2
中,temp
和list
引用同一个列表,因此当您更改其中一个列表时,它们都会更改。你知道吗在
rotate_3
中,您正在制作一个副本。制作副本的一种更为惯用的方法是:我个人会将此函数编写如下:
它使用slicing和list concatenation。你知道吗
注意,我已经将
list
重命名为l
,因为list
是built-in name。你知道吗相关问题 更多 >
编程相关推荐