Python 如何删除列表中多次出现的元素而不更改列表的长度(无集合)
我查阅了很多次,似乎集合是最好的选择,但是对于这个作业,我认为这是不允许的。所以,基本上,我制作了一个空列表,它生成了一个5个元素长的列表,其中的数字在1到9之间。但是所有的数字都需要在列表中出现一次。我该怎么做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
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)