我正在开始我的Python之旅,并正在做一些练习来掌握它的诀窍。一个问题是给我带来麻烦,因为我不知道如何完成它。
给定一个具有偶数整数的列表,使用'-‘连接相邻的元素,并打印每一对。因此,这将是给予:
a = [1, 2, 3, 4, 5, 6, 7, 8]其产出必须是:
1-2
3-4
5-6
7-8现在我已经走到这一步了,但不知道下一步该怎么做:
a = [1, 2, 3, 4, 5, 6, 7, 8]
a1 = a[::2]
a2 = a[1::2]
duos = zip(a1, a2)
print(list(duos))这只给了我这个结果:
[(1, 2), (3, 4), (5, 6), (7, 8)]我觉得我离得很近,只是错过了一小步。
发布于 2022-02-10 22:03:02
构建一个懒惰的迭代器:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8]
>>> it = iter(a)
>>> print([f"{x}-{y}" for x,y in zip(it,it)])
['1-2', '3-4', '5-6', '7-8']发布于 2022-02-10 22:01:30
是的,真的很接近。
您可以使用生成器表达式在没有中间变量的情况下形成对字符串,然后使用"\n".join从格式化的对中生成单个字符串。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]
>>> print("\n".join(f"{a}-{b}" for (a, b) in zip(numbers[::2], numbers[1::2])))
1-2
3-4
5-6
7-8更多的过程版本(在功能上是等价的,但不构成一个列表,但只打印每一对)将是
for (a, b) in zip(numbers[::2], numbers[1::2]):
print(f"{a}-{b}")发布于 2022-02-10 22:03:50
完成你的工作:
for x, y in duos:
print(f'{x}-{y}')(请注意,您需要这样做,而不是您的print(list(duos)),否则会消耗zip迭代器而没有剩下的东西。)
https://stackoverflow.com/questions/71072809
复制相似问题