合并元组列表中的元组
Merging tuples in list of tuples
假设有一个元组列表,其中每个元组只能包含唯一的 characters/numbers,并且每个元组的顺序和长度都相同。像这样,(1, 2, 3)
的元组列表:
l = [
(1 , 2, 3), #1
(None, 2, 3), #2 merge with #4 or #8
(1 , None, 3), #3 merge with #6
(1 , None, None), #4 overhead?
(1 , 2, 3), #5
(None, 2, None), #6
(1 , 2, None), #7 overhead
(1 , None, None), #8 overhead?
]
但在某些元组中,值缺失,缺失值应与来自同一列表的匹配元组合并/补充。
合并后,如果任何元组结束但仍包含 None 值,则应将其截断或附加在末尾。
指定结果:
l = [
(1 , 2, 3), #1
(1 , 2, 3), #2 merged with #4
(1 , 2, 3), #3 merged with #6
(1 , 2, 3), #4
]
python有什么方法可以做到这一点吗?
感谢您的帮助!
使用 zip 试试这个嵌套列表理解:
list(zip(*[[f for f in e if f] for e in zip(*l)]))
输出:
[(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3)]
假设有一个元组列表,其中每个元组只能包含唯一的 characters/numbers,并且每个元组的顺序和长度都相同。像这样,(1, 2, 3)
的元组列表:
l = [
(1 , 2, 3), #1
(None, 2, 3), #2 merge with #4 or #8
(1 , None, 3), #3 merge with #6
(1 , None, None), #4 overhead?
(1 , 2, 3), #5
(None, 2, None), #6
(1 , 2, None), #7 overhead
(1 , None, None), #8 overhead?
]
但在某些元组中,值缺失,缺失值应与来自同一列表的匹配元组合并/补充。 合并后,如果任何元组结束但仍包含 None 值,则应将其截断或附加在末尾。
指定结果:
l = [
(1 , 2, 3), #1
(1 , 2, 3), #2 merged with #4
(1 , 2, 3), #3 merged with #6
(1 , 2, 3), #4
]
python有什么方法可以做到这一点吗?
感谢您的帮助!
使用 zip 试试这个嵌套列表理解:
list(zip(*[[f for f in e if f] for e in zip(*l)]))
输出:
[(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3)]