你好,我有一份按地点分组的个人名单。我想生成一个新变量,根据每个人的位置为每个人提供一个数字。我希望我的数据看起来像这样:
place individual
here 1
here 2
here 3
there 1
there 2
somewhere 1
somewhere 2
我写过这个:
nest="ddd", "ddd", "fff", "fff", "fff", "fff", "qqq", "qqq"
def individual(x):
i = 0
j = 1
while i < len(x):
if x[i] == x[i-1]:
print(j+1)
i = i + 1
j = j + 1
else:
print(1)
i = i + 1
j = 1
individual(nest)
这会打印出我想要的值,但是,当我将 return 放在那里时,它会跳出循环并仅返回第一个值。我想知道如何返回这些值,以便我可以将它们作为新列添加到我的数据中?
我读过有关产量的文章?但不确定这是否合适。感谢您的帮助!
干杯,
亚当
replace print(...)
with yield ...
。然后你将拥有一个生成器,它将为你提供一个可迭代对象。然后,您可以通过迭代结果将其转换为其他适当的数据结构。例如,要从生成器构建列表,您可以执行以下操作:
list(individual(nest)) #this is prefered
在这种情况下,迭代是隐式的......
或者(在这种情况下更迂回但可能提供更多信息):
[ x for x in individual(nest) ] #This is just for demonstration.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)