python列表相邻两元素组成元组

demo = [1,2,3,4,5]
转换成
[(1,2),(3,4),(5,None)]

demo = [1]
转换成
[(1,None)]

成双的组合,单个的加None,为空时什么都不干
阅读 7.8k
4 个回答

print map(None, *([iter([1,2,3,4,5])] * 2))#[(1, 2), (3, 4), (5, None)]
print map(None, *([iter([1])] * 2))#[(1, None)]

list(dict(zip(demo[::2], demo[1::2] if len(demo)%2==0 else demo.append(None))).items())
还是分2行吧

demo if len(demo)%2 == 0 else demo.append(None)

list(dict(zip(demo[::2],demo[1::2])).items())
demo = [1, 2, 3, 4, 5]
print(map(None, demo[::2], demo[1::2]))

python3

>>> from itertools import zip_longest as zipl
>>> list(zipl(*([iter([1,2,3,4,5])] * 2)))
[(1, 2), (3, 4), (5, None)]
>>> list(zipl(*([iter([1])] * 2)))
[(1, None)]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题