Python如何从两个独立列表打印每个首元素对应2个次元素的1x2组合结果
实现方法
你当前用的zip默认会对两个序列按同位置一一配对,两个序列每次各步进1位,只能实现1对1输出。要达成1个首列表元素匹配2个次列表元素的需求,核心是让次列表每次步进2位、连续取2个元素和首列表当前元素配对即可。
前置处理
你给出的输入是逗号分隔的字符串,首先需要拆分为元素列表:
ll = "1,2,3,4,5,6,7,8,9".split(',') l2 = "a,b,c,d,e,f,g,h,i".split(',')
方案1:索引步进实现(直观易读)
维护一个次列表的取值位置指针,遍历首列表时,每次从指针位置取2个次列表元素,打印后指针向前移动2位,同时加边界判断避免索引越界:
pos = 0 for item in ll: # 次列表剩余元素不足2个时终止循环,可根据需求调整为取剩余单个元素 if pos + 1 >= len(l2): break print(item, l2[pos], l2[pos+1]) pos += 2
注:你给出的示例第三行
3 d e存在笔误(元素d重复、逻辑断层),按连续取2个不重复元素的规则,运行上述代码输出如下:1 a b 2 c d 3 e f 4 g h如果需要把次列表最后剩余的单个元素也打印,调整边界判断逻辑即可。
方案2:迭代器实现(代码更简洁)
把次列表转为迭代器,每次通过next()取2个元素,迭代器会自动记录当前位置,不需要手动维护指针:
iter_l2 = iter(l2) for item in ll: try: e1 = next(iter_l2) e2 = next(iter_l2) print(item, e1, e2) except StopIteration: # 次列表元素取完后直接终止循环 break
内容的提问来源于stack exchange,提问作者Andy S
相关产品推荐
相关产品推荐

