2 回答

TA贡献1809条经验 获得超8个赞
您的第一个元素是friendnum中的空字符串,因此您不能对字符串使用追加操作。此外,不能将元组中的值赋值为其不可变。
import random
friendsNum = [("",[]),("",[]),("",[]),("",[])]
peopleNames = ["Alvin","Danny","Maria","Lauren"]
friendNames = ("john","matt","will","mario","wilma","shannon","mary","jordan")
newList = []
tempName = ()
temp = ()
for i in friendsNum:
tempName = random.sample(peopleNames,1)
temp = random.sample(friendNames,2)
i = list(i)
i[0] = (tempName[0])
i[1] = (temp)
newList.append(tuple(i))
使用上面更新的代码,这里是示例输出
[('Danny', ['shannon', 'will']),
('Alvin', ['jordan', 'john']),
('Maria', ['mary', 'will']),
('Alvin', ['wilma', 'mary'])]

TA贡献1946条经验 获得超4个赞
问题数量:
i[0].append(tempName)
:是一个,因此不会有 。此外,你不能直接修改它,因为它已经在元组中并且它是不可变的。i[0]
str
append
i[1].append(temp)
:由于是一个列表,将使其成为嵌套列表。你需要temp
i[1].append(temp)
extend
由于两者都在就地操作,实际上什么也没做。
append
extend
newList
相反,尝试使用列表理解的单行:
[(random.choice(peopleNames), random.sample(friendNames,2)) for i in range(len(peopleNames))]
输出:
[('Danny', ['shannon', 'john']), ('Maria', ['mary', 'shannon']), ('Lauren', ['matt', 'wilma']), ('Alvin', ['will', 'mario'])]
添加回答
举报