Python yield生成器能生成多个对象object吗 又由多个对象分别接收

Will_Ye 2019-05-09 10:37:28

如return一样,可以独立输出两个变量,又让两个变量来分别接收,如下图代码:
```
def Test():
a=1
b=2
return a,b

a,b=Test()
```

但是如果将return改成yield就不行了,可以输出两个变量,但不能由两个变量来分别接收,谁知道方法,忘指教
...全文
298 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Will_Ye 2019-05-15
  • 打赏
  • 举报
回复
别沉,求路过的大神,帮忙看看有没有解决办法
Will_Ye 2019-05-13
  • 打赏
  • 举报
回复
引用 5 楼 一笑程序猴 的回复:
[quote=引用 4 楼 Will_Ye 的回复:]
有没有大神能解答,急求方法!~


把你循环的代码贴出来看一下[/quote]


def load_for_dataNname(train_path='/home/data/train.txt',
val_path='/home/data/val.txt',
batch_size=64):
with open(train_path, 'rb') as f:
dict_1 = pickle.load(f, encoding='iso-8859-1')

with open(val_path, 'rb') as fin:
dict_2 = pickle.load(fin, encoding='iso-8859-1')

x = []
name_list = []

cnt=0
dicts_list=[dict_1,dict_2]

while 1:
for feats in dicts_list:
for name in feats:
feat = feats[name]
x.append(feat)
name_list.append(name)
cnt+=1
if cnt==batch_size:
cnt=0
random.seed(1)
random.shuffle(x)
random.seed(1)
random.shuffle(name_list)
yield (np.array(x),name_list)
x=[]
name_list=[]

if __name__ == '__main__':

data = load_for_dataNname()

for d in data:
da = d[0]#想把data数据分出来导入下面的模型训练中
name = d[1]


#model
x=input(shape=(10,))
x=Dense(20,activation='relu')(x)
output=Dense(100,activation='softmax')(x)

model.fit_generator(da,
steps_per_epoch=100,
epochs=10,
verbose=1)



进入循环部分的代码就是`for d in data:` 这里开始,麻烦大神帮忙看看,万分感谢
一笑程序猴 2019-05-13
  • 打赏
  • 举报
回复
引用 4 楼 Will_Ye 的回复:
有没有大神能解答,急求方法!~


把你循环的代码贴出来看一下
Will_Ye 2019-05-12
  • 打赏
  • 举报
回复
有没有大神能解答,急求方法!~
Will_Ye 2019-05-11
  • 打赏
  • 举报
回复
引用 2 楼 一笑程序猴 的回复:
如果想分别获取某个值可以写成这样


def test():
a = 1
b = 2
c = 3
yield a,b,c

d = test()
for x in d:
for y in x:
print(y)

有没有不用for循环的方法,因为我的代码里generator是while true:一直输出数据的,如果导入for 循环里,就一直出不来了
一笑程序猴 2019-05-10
  • 打赏
  • 举报
回复
如果想分别获取某个值可以写成这样


def test():
a = 1
b = 2
c = 3
yield a,b,c

d = test()
for x in d:
for y in x:
print(y)
一笑程序猴 2019-05-10
  • 打赏
  • 举报
回复
改成yield就变成一个生成器了,你接收的时候只用一个变量来接收就可以了,最终得到的值是一个元组。

def test():
a = 1
b = 2
c = 3
yield a,b,c

d = test()
for x in d:
print(x)

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧