您的伪代码几乎可以在 Python 中运行。一些可以满足您要求的工作代码是:
a = [1, 3, 5, 7]
b = [2, 4, 9]
j = 0
for i in range(len(a)):
print a[i], b[j]
while j<len(b)-1 and b[j+1] <= a[i]:
j += 1
print a[i], b[j]
注意使它在 Python 中工作的一些更改:
- 声明列表时,项目之间需要逗号。
- 列表索引从 0 开始,因此
i 和 j 都应该从那里开始。
-
len(a) 返回a 的长度(在这种情况下为4),并迭代i 到range(len(a)) 为从0 到len(a)-1 的每个整数执行循环,这是@987654331 中的所有索引@。
- Python 不支持
++ 操作,因此我们使用j +=1 代替。
- 我们必须避免使用
b 的越界索引,因此我们测试以确保j 在递增之前会在界内。
通过遍历列表,可以使这段代码更加pythonic,如下所示:
a = [1, 3, 5, 7]
b = [2, 4, 9]
j = 0
for element in a:
print element, b[j]
while j<len(b)-1 and b[j+1] <= element:
j += 1
print element, b[j]
一般来说,您可能不想只打印列表元素,因此对于更一般的用例,您可以创建一个generator,例如:
def sync_lists(a, b)
if b:
j = 0
for element in a:
yield (element, b[j])
while j<len(b)-1 and b[j+1] <= element:
j += 1
yield (element, b[j])
然后你可以像以前一样打印它们
a = [1, 3, 5, 7]
b = [2, 4, 9]
for (e1, e2) in sync_lists(a, b):
print e1, e2