Python:p中的操作列表

2024-04-26 15:02:55 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一个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为什么会被更改?它给我一种感觉,好像listtemptemp = list连接起来。为什么rotate_3可以?抱歉,如果我的英语很奇怪,它不是我的第一语言(不像Python)。你知道吗


Tags: 函数in内容列表for参数returndef
1条回答
网友
1楼 · 发布于 2024-04-26 15:02:55

rotate_2中,templist引用同一个列表,因此当您更改其中一个列表时,它们都会更改。你知道吗

rotate_3中,您正在制作一个副本。制作副本的一种更为惯用的方法是:

temp = list[:]

我个人会将此函数编写如下:

def rotate_4(l):
    return l[1:] + [l[0]]

它使用slicinglist concatenation。你知道吗

注意,我已经将list重命名为l,因为listbuilt-in name。你知道吗

相关问题 更多 >