我正在尝试从列表中构建名字、姓氏组合。但是在我的循环函数中没有做到这一点。感谢一些帮助。
names = ['Appleby', 'James']
nn = ['James', 'Jim', 'Jimmy', 'Jimmie', 'Jamie', 'Jem']
combos = []
for g in nn:
names[1] = g
combos.append(names)
print(combos)
结果:
[['Appleby', 'Jem'],
['Appleby', 'Jem'],
['Appleby', 'Jem'],
['Appleby', 'Jem'],
['Appleby', 'Jem'],
['Appleby', 'Jem']]
我想实现的是:
[['Appleby', 'James'],
['Appleby', 'Jim'],
['Appleby', 'Jimmy'],
['Appleby', 'Jimmie'],
['Appleby', 'Jamie'],
['Appleby', 'Jem']]
最佳答案
我相信您正在寻找两个列表中名称的所有组合。 你可以用这个 -
combos = [[name, n] for n in nn for name in names]
如果您只想与“Appleby”组合。使用
combos = [[names[0], n] for n in nn]
问题出在更新 name[1] = g 时。它正在更新同一个列表,该列表在组合中被多次附加。有关更多信息,请查看 python 中的可变对象和不可变对象(immutable对象)。
关于列表+=
操作符的具体信息,参见this answer .
关于python - 使用 Python 在循环中生成列表组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586175/