gpt4 book ai didi

python - 如何在 yield 中扩展元组?

转载 作者:太空狗 更新时间:2023-10-30 01:47:46 24 4
gpt4 key购买 nike

我正在尝试在 yield 语句中扩展一个元组,但出现了 SyntaxError。这甚至可能,还是 * 运算符仅用于函数调用?

下面是一个例子:

class Inner(object):
def __init__(self):
self._vals = {'a': 1,
'b': 2,
'c': 3,
'd': 4}

def __iter__(self):
for key, val in self._vals.items():
yield key, val

class Outer(object):
def __init__(self):
self._morevals = {"foo": Inner(),
"bar": Inner()}

def __iter__(self):
for key, moreval in self._morevals.items():
for val in moreval:
yield key, *val # !!! <--- This is where the error is

object_under_test = Outer()

for outer_key, inner_key, inner_value in object_under_test:
print("{} {} {}".format(outer_key, inner_key, inner_value))

# Want:
# foo a 1
# foo b 2
# foo c 3
# foo d 4
# bar a 1
# bar b 2
# bar c 3
# bar d 4

相反,我收到此错误:

    yield key, *val
^
SyntaxError: invalid syntax

最佳答案

在元组周围添加括号:

yield (key, *val)

yield 在这里很特别,因为表单只接受表达式列表,而不是 starred_list form。 .

关于python - 如何在 yield 中扩展元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45392621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com