我们假设我们有以下情况:
for a, b, c, d in some_function('some_file.txt'):
for i in range(1, 16):
for x in json_data[str(i)]["commune"]:
print json_data[str(i)]["commune"][str(x)]["code"].encode('utf-8')
a
,b
,c
,d
yield
来自some_function(...)
i
显然需要1 <= i < 16
x
表示来自 json 结构现在,我似乎无法找到解决问题的方法是通过每个循环一次,但跟踪值,以便我可以在下一次迭代时从那里开始。
例如,让我们想象三个列表:
list_1 = [1, 2, 3, 4, 5, 6, 7, 8]
list_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list_3 = [1, 2, 3, 4]
1,2,3,4
1
- &gt;第一个国家1
- &gt;第一个国家的第一个城市5,6,7,8
1
- &gt;第一个国家(这个国家还有城市)2
- &gt;来自第一个国家的第二个城市依旧......
现在,因为最后for
通过 json 结构(例如here),我必须经历它的所有值,总是使用不同的{{ 1}}但是在json值完成之前使用相同的a,b,c,d
。
实际示例
想象一下如下:
i
)和城市(i
))。当一个国家的所有城市都被浪费时,去下一个国家,依此类推。
我想要的是获得一个国家的每个城市,总是与不同的用户。关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
简化您的代码,您希望在其他地方关注json_data
。
def f():
for a, b, c, d in some_function('some_file.txt'):
for i in range(1, 16):
for x in json_data[str(i)]["commune"]:
yield a, b, c, d, i, x
for a, b, c, d, i, x in f():
print json_data[str(i)]["commune"][str(x)]["code"].encode('utf-8')
根据您的描述,您希望同时通过外部循环some_function
和两个内部循环。
这意味着你需要做两件事:
展平两个内环。
g = (
(i, x)
for i in range(1, 16)
for x in json_data[str(i)]["commune"]
)
zip
通过两个循环。
zip(some_function('some_file.txt'), g)
这可以让你得到一些简单的东西:
g = (
(i, x)
for i in range(1, 16)
for x in json_data[str(i)]["commune"]
)
for (a, b, c, d), (i, x) in zip(some_function('some_file.txt'), g):
print json_data[str(i)]["commune"][str(x)]["code"].encode('utf-8')
答案 1 :(得分:0)
你总是可以尝试使用while循环手动迭代,在嵌套循环中,所以你可以说:
while(a != 0):
while(b != 6):
if(b%2 == 0):
a++
b++
a++
这样,即使你的b数是偶数,它也会增加。(双关语无意)