首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将列表中的相邻元素与中间的字符串连接起来?

如何将列表中的相邻元素与中间的字符串连接起来?
EN

Stack Overflow用户
提问于 2022-02-10 21:59:49
回答 4查看 417关注 0票数 0

我正在开始我的Python之旅,并正在做一些练习来掌握它的诀窍。一个问题是给我带来麻烦,因为我不知道如何完成它。

给定一个具有偶数整数的列表,使用'-‘连接相邻的元素,并打印每一对。因此,这将是给予:

代码语言:javascript
复制
a = [1, 2, 3, 4, 5, 6, 7, 8]

其产出必须是:

代码语言:javascript
复制
1-2
3-4
5-6
7-8

现在我已经走到这一步了,但不知道下一步该怎么做:

代码语言:javascript
复制
a = [1, 2, 3, 4, 5, 6, 7, 8]
a1 = a[::2]
a2 = a[1::2]

duos = zip(a1, a2)
print(list(duos))

这只给了我这个结果:

代码语言:javascript
复制
[(1, 2), (3, 4), (5, 6), (7, 8)]

我觉得我离得很近,只是错过了一小步。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-02-10 22:03:02

构建一个懒惰的迭代器:

代码语言:javascript
复制
>>> 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']
票数 9
EN

Stack Overflow用户

发布于 2022-02-10 22:01:30

是的,真的很接近。

您可以使用生成器表达式在没有中间变量的情况下形成对字符串,然后使用"\n".join从格式化的对中生成单个字符串。

代码语言:javascript
复制
>>> 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

更多的过程版本(在功能上是等价的,但不构成一个列表,但只打印每一对)将是

代码语言:javascript
复制
for (a, b) in zip(numbers[::2], numbers[1::2]):
    print(f"{a}-{b}")
票数 2
EN

Stack Overflow用户

发布于 2022-02-10 22:03:50

完成你的工作:

代码语言:javascript
复制
for x, y in duos:
    print(f'{x}-{y}')

(请注意,您需要这样做,而不是您的print(list(duos)),否则会消耗zip迭代器而没有剩下的东西。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71072809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档