我正在编写一个简单的秘密圣诞老人脚本,从列表中选择一个“GiftReceiver”和一个“GiftGiver”。生成两个列表和一个要填充的空数据框:
import pandas as pd
import random
santaslist_receivers = ['Rudolf',
'Blitzen',
'Prancer',
'Dasher',
'Vixen',
'Comet'
]
santaslist_givers = santaslist_receivers
finalDataFrame = pd.DataFrame(columns = ['GiftGiver','GiftReceiver'])
然后我有一个 while 循环,它从每个列表中选择随机元素来选择礼物赠送者和接收者,然后从相应的列表中删除:
while len(santaslist_receivers) > 0:
print (len(santaslist_receivers)) #Used for testing.
gift_receiver = random.choice(santaslist_receivers)
santaslist_receivers.remove(gift_receiver)
print (len(santaslist_receivers)) #Used for testing.
gift_giver = random.choice(santaslist_givers)
while gift_giver == gift_receiver: #While loop ensures that gift_giver != gift_receiver
gift_giver = random.choice(santaslist_givers)
santaslist_givers.remove(gift_giver)
dummyDF = pd.DataFrame({'GiftGiver':gift_giver,'GiftReceiver':gift_receiver}, index = [0])
finalDataFrame = finalDataFrame.append(dummyDF)
最终的数据帧只包含三个元素而不是六个:
print(finalDataframe)
返回
GiftGiver GiftReceiver
0 Dasher Prancer
0 Comet Vixen
0 Rudolf Blitzen
我在 while 循环中插入了两条打印行以进行调查。这些在删除元素之前和之后打印列表 santaslist_receivers 的长度。预期的回报是在第一次打印时看到原始列表长度,然后在第二次打印时看到减 1,然后在 while 循环的下一次迭代的第一次打印时再次看到相同的长度,然后依此类推。具体来说,我期望:
6,5,5,4,4,3,3... and so on.
返回的是
6,5,4,3,2,1
这与只有 3 行的 DataFrame 一致,但我看不出这是什么原因。
我的代码或我的方法有什么错误?
繁花不似锦
相关分类