gpt4 book ai didi

python - 如何生成一个随机值,然后使用 pop 方法将其删除?

转载 作者:行者123 更新时间:2023-12-02 02:29:35 26 4
gpt4 key购买 nike

我试图从列表中获取一个随机名称,然后一旦打印出来,我想将其从该列表中删除,以便不再使用它。我想使用 pop 方法,但我不确定如何从列表中获取随机名称,因为 pop 方法(据我所知)只接受整数。

这是我的代码:

Boy = ['David','John','Paul','Mark','James','Andrew','Scott','Steven','Robert','Stephen','William','Craig','Michael'
,'Stuart','Christopher','Alan','Colin','Kevin','Gary','Richard','Derek','Martin','Thomas','Neil','Barry',
'Ian','Jason','Iain','Gordon','Alexander','Graeme','Peter','Darren','Graham','George','Kenneth','Allan',
'Simon','Douglas','Keith','Lee','Anthony','Grant','Ross','Jonathan','Gavin','Nicholas','Joseph','Stewart',
'Daniel','Edward','Matthew','Donald','Fraser','Garry','Malcolm','Charles','Duncan','Alistair','Raymond',
'Philip','Ronald','Ewan','Ryan','Francis','Bruce','Patrick','Alastair','Bryan','Marc','Jamie','Hugh','Euan',
'Gerard','Sean','Wayne','Adam','Calum','Alasdair','Robin','Greig','Angus','Russell','Cameron','Roderick',
'Norman','Murray','Gareth','DeanEric','Adrian','Gregor','Samuel','Gerald','Henry','Benjamin','Shaun','Callum',
'Campbell','Frank','Roy','Timothy','Liam','Noah','Oliver','William','Elijah','James','Benjamin','Lucas',
'Mason','Ethan','Alexander','Henry','Jacob','Michael','Daniel','Logan','Jackson','Sebastian','Jack','Aiden',
'Owen','Samuel','Matthew','Joseph','Levi','Mateo','Wyatt','Carter','Julian','Luke','Grayson','Isaac','Jayden'
,'Theodore','Gabriel','Anthony','Dylan','Leo','Christopher','Josiah','Andrew','Thomas','Joshua','Ezra',
'Hudson','Charles','Caleb','Isaiah','Ryan','Nathan','Adrian','Christian']

Girl = ['Emma','Ava','Sophia','Isabella','Charlotte','Amelia','Mia','Harper','Evelyn','Abigail','Emily','Ella',
'Elizabeth','Camila','Luna','Sofia','Avery','Mila','Aria','Scarlett','Penelope','Layla','Chloe','Victoria',
'Madison','Eleanor','Grace','Nora','Riley','Zoey','Hannah','Hazel','Lily','Ellie','Violet','Lillian','Zoe',
'Stella','Aurora','Natalie','Emilia','Everly','Leah','Aubrey','Willow','Addison','Lucy','Audrey','Bella',
'Nova','Brooklyn','Paisley','Savannah','Claire','Skylar','Isla','Genesis','Naomi','Elena','Caroline','Eliana'
,'Anna','Maya','Valentina','Ruby','Kennedy','Ivy','Ariana','Aaliyah','Cora','Madelyn','Alice','Kinsley',
'Hailey','Gabriella','Allison','Gianna,Sarah','Autumn','Quinn','Eva','Piper','Sophie','Sadie','Delilah'
,'Josephine','Nevaeh','Adeline','Arya','Emery','Lydia','Clara','Vivian','Madeline','Peyton','Julia','Rylee',
'Brielle','Reagan','Natalia','Jade'',Athena','Maria','Leilani','Everleigh','Liliana','Melanie','Mackenzie',
'Hadley','Raelynn','Kaylee','Rose','Arianna','Isabelle','Melody','Eliza','Lyla','Katherine','Aubree',
'Adalynn','Kylie','Faith','Marly','Margaret','Ximena','Iris','Alexandra','Jasmine','Charlie','Amaya',
'Taylor','Isabel','Ashley','Khloe','Ryleigh','Alexa','Amara','Valeria','Andrea','Parker','Norah','Eden',
'Elliana','Brianna','Emersyn','Valerie','Anastasia','Eloise','Emerson','Cecilia','Remi','Josie','Reese',
'Bailey','Lucia','Adalyn','Molly','Ayla','Sara','Daisy','London','Jordyn','Esther','Genevieve','Harmony',
'Annabelle','Alyssa','Ariel','Aliyah','Londyn','Juliana','Morgan','Summer','Juliette','Trinity','Callie',
'Sienna','Blakely','Alaia','Kayla','Teagan','Alaina','Brynlee','Finley','Catalina','Sloane','Rachel','Lilly'
,'Ember']

def boyname():
result = Boy.pop(insert code for random name here)
print(result)
print(Boy)

boynames = boyname()
print(boynames)

最佳答案

简单地说:

name = Boy.pop(random.randint(0, len(Boy)-1))

但是:您不应该这样做,尤其是在函数内部,因为它会影响调用者的列表(或者在您的情况下,包含列表的全局变量)。

考虑取随机子集的能力(没有副作用):

sample = random.sample(Boy, k)

例如,您可以对列表进行随机排序(即不进行替换的示例),确保您仅“打印”每个值一次:

for name in random.sample(Boy, len(Boy)):
...

您甚至可以将其变成发电机,以获得无限乐趣:

from itertools import count

def pick(a, n_loops=None):
"""if n_loops is None: cycle endlessly"""
counter = count()
while n_loops is None or next(counter) < n_loops:
yield from random.sample(a, len(a))

用法:

name_gen = pick(Boy)  # infinite generator: loops around shuffles;
# no repeat during a single loop
list(islice(name_gen, 5))

# or

names = pick(Boy, 1) # one random shuffle of Boy

另一个有趣的例子:

for b, g in islice(zip(pick(Boy), pick(Girl)), 4):
print(f'{b} and {g}')
# out:
Carter and Molly
Malcolm and Lydia
Sebastian and Ruby
Charles and Aliyah

关于python - 如何生成一个随机值,然后使用 pop 方法将其删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65261031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com