class GroupMemberSerializer(serializers.ModelSerializer):
class Meta:
model = GroupMember
fields = "__all__"
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = "__all__"
为什么打印输出为def upto(n):
items = []
for i in range(n):
items.append(i)
yield items
print(list(upto(2)))
?当我在upto(2)上两次调用next时,第一次是[[0,1],[0,1]]
,第二次是yields [0]
,所以结果不应该是[0,1]
吗?
答案 0 :(得分:2)
您需要出示副本yield items[:]
答案 1 :(得分:0)
In [1]:
def upto(n):
items = []
for i in range(n):
items.append(i)
yield items.copy()
list(upto(2))
Out[1]: [[0], [0, 1]]
答案 2 :(得分:0)
问题是,当您尝试在生成器上调用list方法时,您引用的是同一列表(按引用列出工作)。您产生的列表在每次循环时都会更新。因此,当您列出生成器时,它会得到更新的列表。要获得所需的内容,您可以执行以下两项操作之一,
yield items[:]
for i in upto(2):
print(i) # here,each time it gets the current one