【问题标题】:Same values in two lists (pairs)两个列表(对)中的相同值
【发布时间】:2016-11-13 10:06:52
【问题描述】:

我需要有一个列表,其中一个列表随机生成 1 到 8 之间的值,另一个列表也随机生成 1 到 8 之间的值。我设法在下面的代码中做到了这一点:

from random import *
listA = []
listB = []
inp = int(input('Number of values generated'))
for x in range(0,inp):
    num = randint(0,8)
    listA.append(num)
    if num == 0:
        numB = randint(1,8)
    else:
        numB = randint(0,8)
    listB.append(numB)
print(listA)
print(listB)

第一个列表中的值不能为 0,第二个列表中的值也不能为零。我的代码中已经有了这个。然而,这是我遇到的问题。

[4, 5, 2, 5, 1]

[1, 2, 3, 2, 4]

在 listA 中,5 产生了两次,第二个列表中它下面的 2 也产生了两次。当他们创建这样的一对时,我想不出一个解决方案来从我的列表中删除这些。

【问题讨论】:

  • 如果你只使用8个,你为什么要问用户有多少个数字?
  • 它的值在0到8之间,但是每个列表都需要添加一定数量的数字
  • 你可以改变你的算法:创建一个包含数字 1..8 的元组现在,让 N 是用户输入的项目数 (0

标签: python list random python-3.3


【解决方案1】:

您可以使用下面的辅助函数来生成不在列表中的唯一编号并将其附加到列表中。

这应该适合你:

def generateUnique(list, start, end):  # Helper Function to generate and return unique number not in list
    num = randint(start, end)
    while num in list:  # loop will keep generating a value, until it is unique in the given list
        num = randint(start, end)
    return num


from random import *
listA = []
listB = []
inp = int(input('Number of values generated'))
for x in range(0,inp):
    num = generateUnique(listA, 0, 8)
    listA.append(num)
    if num == 0:
        numB = generateUnique(listB, 1, 8)
    else:
        numB = generateUnique(listB, 0, 8)
    listB.append(numB)

print(listA)
print(listB)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多