生成随机名称列表 - Python

时间:2016-12-01 22:44:16

标签: python

我试图创建一个名单列表,每个名称都不同。这是我现在的代码,但它只创建了多个同名的实例。

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')

full_name=random.choice(first_names)+" "+random.choice(last_names)

group=full_name*3

例如,这将显示为:

John Smith
John Smith
John Smith

但我想要的是:

John Williams
Andy Johnson
Joe Johnson

7 个答案:

答案 0 :(得分:2)

这是因为您生成了一个名称,然后将其复制三次。

如果你想要三个不同的名字,那么循环你的选择程序三次:

group = []
for i in range(3):
    full_name=random.choice(first_names)+" "+random.choice(last_names)
    group.append(full_name)
 #assuming he wants at least some kind of seperator between the names.
 group_string = ", ".join(group)
顺便说一句,您真的希望群组成为刚刚连接的所有名称吗?

答案 1 :(得分:1)

你只是在这里复制你的字符串。随机只发生一次。

改为在生成器理解中进行,并将结果与​​空间结合:

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')

group=" ".join(random.choice(first_names)+" "+random.choice(last_names) for _ in range(3))


print(group)

输出:

Joe Williams Joe Johnson Joe Smith

答案 2 :(得分:0)

您所做的是在字符串上使用*3,这意味着它会将该字符串复制三次。

要做你想做的事,你必须拨打random.choice作为名字和姓氏三次。

full_name1 = random.choice(first_names)+" "+random.choice(last_names)
full_name2 = random.choice(first_names)+" "+random.choice(last_names)
full_name3 = random.choice(first_names)+" "+random.choice(last_names)

group = full_name1 + " " + full_name2 + " " + full_name3

您也可以在for循环中执行此操作,以避免重复代码。

答案 3 :(得分:0)

你需要调用random.choice() 3次而不是调用一次并打印相同的全名3次

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')
group = list()
for x in range(3):
    fullname = random.choice(first_names)+" "+random.choice(last_names)
    group.add(fullname)
print " ".join(group)

答案 4 :(得分:0)

......只是更短。

from random import choice
first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')

name = " ".join(["%s %s" % (choice(first_names), choice(last_names)) for _ in range(3)])    

答案 5 :(得分:0)

由于输出位于一行,每个名称之间用空格分隔,因此您可以简化代码并将每个名称存储在一个列表中,尽管您在“名字”“姓氏”模式中附加名称。从那里你可以打印6个名字,最后用空格分隔,给你三个全名。总之,'random.choice()'函数需要被调用6次。

import random

first_names=('John','Andy','Joe')
last_names=('Johnson','Smith','Williams')
names = []
for i in range(3):
    names.append(random.choice(first_name)
    names.append(random.choice(last_name)

print ' '.join(names)

输出

Andy Smith Andy Williams John Johnson

答案 6 :(得分:0)

您可以将主要部分放在一个带有打印的函数中,然后调用该函数 3 次。

def name():
    import random
    
    first_names=('John','Andy','Joe')
    last_names=('Johnson','Smith','Williams')
    
    full_name=random.choice(first_names)+" "+random.choice(last_names)
    print(full_name)
for _ in range(3):
    name()