生成随机名称列表 - Python

生成随机名称列表 - Python

问题描述:

我试图创建一个名称列表,每个名称都不相同。这里是我的代码,但它所做的是创建同名多个实例。生成随机名称列表 - 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 

例如,这将显示为:

约翰·史密斯 约翰·史密斯 约翰·史密斯

但我想是这样的: 约翰·威廉姆斯 安迪·约翰逊 乔 - 约翰逊

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

做一个发电机包容来代替,并加入与空间的结果:

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 

这是因为你生成一个名字,然后重复三次。

如果你想三个不同的名字,然后遍历您选择常规三次:

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) 

顺便说一句,你真的想是所有的名字只是连接起来?

你所做的是在字符串上使用*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循环中做到这一点,以避免重复代码。

需要调用不是调用一次其他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) 

...只是短。

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)])  

由于输出是使用空格隔开每个名称一行,就可以简化代码,每名在一个列表中存储,尽管你在追加的“名”,“姓”模式的名称。从那里你可以在最后打印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