Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除列表中多次出现的元素而不更改列表的长度(无集合)_Python_Python 3.x_List - Fatal编程技术网

Python 如何删除列表中多次出现的元素而不更改列表的长度(无集合)

Python 如何删除列表中多次出现的元素而不更改列表的长度(无集合),python,python-3.x,list,Python,Python 3.x,List,我查阅了很多次,似乎集合是最好的选择,但是对于这个作业,我认为这是不允许的。所以,基本上,我制作了一个空列表,它生成了一个5个元素长的列表,其中的数字在1到9之间。但是所有的数字都需要在列表中出现一次。我该怎么做 import random lis = [] for i in range(1,6): x = random.randint(1,9) lis.append(x) 我试过了 if x not in lis: li

我查阅了很多次,似乎集合是最好的选择,但是对于这个作业,我认为这是不允许的。所以,基本上,我制作了一个空列表,它生成了一个5个元素长的列表,其中的数字在1到9之间。但是所有的数字都需要在列表中出现一次。我该怎么做

    import random
    lis = []
    for i in range(1,6):
        x = random.randint(1,9)
        lis.append(x)
我试过了

    if x not in lis:
    lis.append(x)

但我的清单的长度一直在变化

IIUC,您可以在最初尝试的
if
语句旁边使用
while

import random
lis = []
while len(lis) < 5:
    x = random.randint(1,9)
    if x not in lis:
        lis.append(x)

>>> lis
[2, 8, 1, 5, 3]


你可以像Sacul用while循环说的那样做,但这里有另一个奇特的选择,虽然你的作业可能不允许这样做

import random
lis = random.sample(range(1,10),5)

哦,是的,我明白了,我忘了提到教授不允许我们使用random.sample或random.shuffle。但是非常感谢!完美的非常感谢你!while循环有帮助,我想在这种情况下,while循环比使用for循环更好!再次感谢您!
import numpy as np

>>> np.random.choice(range(1,10),5,replace=False)
array([7, 5, 3, 6, 4])
import random
lis = random.sample(range(1,10),5)