如何用一行Python代码生成首尾相连的循环配对列表?
一行代码生成首尾循环的配对字符串列表
给定列表 labels = [0, 1, 2, 3, 4],需要生成列表 ['0-1', '1-2', '2-3', '3-4', '4-0'],要求用一行代码实现,且避免为收尾的循环配对添加if判断。
解决方案
利用zip函数将原列表与“切片后拼接首元素”的列表配对,结合列表推导式即可完成一行代码实现:
labels = [0, 1, 2, 3, 4] result = [f"{a}-{b}" for a, b in zip(labels, labels[1:] + [labels[0]])]
原理说明
labels[1:] + [labels[0]]会生成新列表[1, 2, 3, 4, 0],相当于原列表循环移位一位后的结果zip(labels, 新列表)会将两个列表的对应元素配对,得到(0,1), (1,2), (2,3), (3,4), (4,0)五组元组- 通过f-string将每组元组格式化为指定的字符串格式,全程无需
if判断处理收尾配对
内容的提问来源于stack exchange,提问作者Rubens Benevides
相关产品推荐
相关产品推荐

