从没有重复项的列表创建随机列表

2024-04-25 01:26:34 发布

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

我正在尝试从一个列表创建一个新的列表。目标是从listA中随机选取一个名称,并将其添加到listB中的特定位置。但是,名字不应该在listB中重复。你知道吗

这是我的尝试。有时可以,有时我会得到“RecursionError:maximum recursion depth exceeded in comparison”。它可以追溯到yFinder或zFinder。你知道吗

如有任何建议,将不胜感激。谢谢!你知道吗

import random

listA = ["Foo","Spam","Eggs"]
listB = [["A"],["B"],["C"]]

x = random.sample(listA,1)
y = random.sample(listA,1)
z = random.sample(listA,1)

def xFinder():
  x
  listB[0].append(x)

def yFinder():
  y
  if y != x:
    listB[1].append(y)
  else:
    yFinder()

def zFinder():
  z
  if z == y:
    zFinder()
  elif z == x:
    zFinder()
  else:
    listB[2].append(z)   

xFinder()
yFinder()
zFinder()

print(listB)

Tags: sample名称目标列表ifdefrandom名字
1条回答
网友
1楼 · 发布于 2024-04-25 01:26:34

你得到的是无限递归,因为当你递归调用函数时,你从来没有重新分配过任何变量。所以相同的if条件成功,您再次递归。你知道吗

但重复选取一个随机元素并不是一个好方法。洗牌list1,然后将list1的每个元素附加到list2的相应元素。你知道吗

random.shuffle(list1)
for i, el in enumerate(list1):
    list2[i].append(el)

相关问题 更多 >