您的伪代码几乎可以在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都应该从0开始。
- len(a)返回a的长度(在本例中为4),通过将i迭代到range(len(a))中,可以执行循环,从0到len(a)-1的每个整数,这是a中的所有索引。
- Python不支持++操作,因此我们改用j + = 1。
- 我们必须避免使用超出b范围的索引,因此我们在增加j之前测试以确保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]
通常情况下,您可能不只是想打印列表元素,因此为了更一般的用例,您可以创建一个生成器,例如:
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
9
,但我的Python翻译中有显示。 - murgatroid99