以前の質問を二重にして申し訳ありませんが、問題を解決する特定のデータを尋ねると思いました。この結果が欲しい
tuple_of_vars = (item for _, item for zip(tuple_of_vars, new_vals_generator))
これは不可能なので
a, b, c, d = (val for val in infite_generator)
実際には、私は一行でやりたい
for var in var_list:
var = next(infinite_generator)
割り当ての左側に変数の数のメタ情報を取得するためのインタープリター フックはありますか? この最後のコードを自動的に実行できる方が良いでしょう(変数インデックスとステップを持つスライスである左側のケースを含む)
また、割り当ての左側にある変数のジェネレーターを作成する方法もあります。
編集:これは Python3 で停止しません:
def incr(a):
while True:
yield a
a += 1
a = [None for i in range(20)]
a[3:3:3], *_ = incr(1)
print(a)
と同じ:
a,b,c,d, *_ = incr(1)
print(a, b, c, d)
スライスもありません (実際には、インデックスは変数になります。これは単なるテストです)。islice などは承知していますが、遅すぎます。
これもエラーを生成します:
a = 1000*[True]
bound = int(len(a) ** 0.5)
for i in range(3, bound, 2):
a[3::i], *x = [[False] for _ in range(bound)]
""" Error:
ValueError: attempt to assign sequence of size 1 to extended slice of size 333
"""
この:
a = 1000*[True]
bound = int(len(a) ** 0.5)
for i in range(3, bound, 2):
a[3::i], *x = [False] * bound
""" Error:
TypeError: must assign iterable to extended slice
"""