python-3.x 为什么列表在返回前消失[关闭]

m1m5dgzv  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(100)

已关闭。此问题需要details or clarity。它目前不接受回答。
**希望改进此问题?**通过editing this post添加详细信息并阐明问题。

7天前关闭
Improve this question
我试图创建一个函数来返回列表的随机顺序(顺便说一句,如果有一个函数可以做到这一点,我会想要它),但不知何故,列表在我返回它时消失了:

def generaterandomlistorder(l : list):
    nlist = []
    br = False
    for i in range(len(l)):
        if br:
            break
        else:
            c = random.choice(l)
            nlist.append(c)
            l.remove(c)
        if len(l) == 0:
            br = True
    print(nlist)
    return nlist

字符串
这段代码打印:
[3、4、5]
[]
我不明白,因为我只用了一个指纹,为什么它消失了???
我试图保存文件或重新加载文件,但它没有工作。不知何故,它也打印了一些东西,我没有让它打印出来,几乎就像一个递归函数,虽然显然我没有使用它们。

5m1hhzi4

5m1hhzi41#

最好的答案是random模块中的random.shuffle(),其工作原理如下:

import random

some_list = ['A','B','C','D']
random.shuffle(some_list)
print(some_list)

字符串
您也可以编写自己的函数,随机切换原始列表中的项目:

import random

def generaterandomlistorder(l:list):
    n = len(l)
    for i in range(n):
        j = random.randint(0, n - 1)
        l[i], l[j] = l[j], l[i]
    return l


这两种方法都有一个优点,即它们不会**appendremove列表中的项目。

相关问题