生成随机名称列表 - 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