Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中以非标准方式组合两个列表_Python_List - Fatal编程技术网

如何在Python中以非标准方式组合两个列表

如何在Python中以非标准方式组合两个列表,python,list,Python,List,我有以下两个列表: a = ['A-B', 'A-D', 'B-C', 'B-D', 'B-E', 'C-E', 'D-E', 'D-F', 'E-F', 'E-G', 'F-G'] b = ['7', '5', '8', '9', '7', '5', '15', '6', '8', '9', 11] 我想将这些列表转换为如下所示: [ ("A", "B", 7), ("A", "D", 5), ("B", "C", 8), ("B", "D", 9), ("B", "E", 7), ("C"

我有以下两个列表:

a = ['A-B', 'A-D', 'B-C', 'B-D', 'B-E', 'C-E', 'D-E', 'D-F', 'E-F', 'E-G', 'F-G']
b = ['7', '5', '8', '9', '7', '5', '15', '6', '8', '9', 11]
我想将这些列表转换为如下所示:

[ ("A", "B", 7), ("A", "D", 5), ("B", "C", 8), ("B", "D", 9), ("B", "E", 7), ("C", "E", 5), ("D", "E", 15), ("D", "F", 6), ("E", "F", 8), ("E", "G", 9), ("F", "G", 11)]
问题是第一个列表需要拆分,然后合并到第二个列表中,并使用一个元组作为输出。蟒蛇式的方法是什么

>>> a = ['A-B', 'A-D', 'B-C', 'B-D', 'B-E', 'C-E', 'D-E', 'D-F', 'E-F', 'E-G', 'F-G']    
>>> b = ['7', '5', '8', '9', '7', '5', '15', '6', '8', '9', 11]
>>> [x.split('-') + [int(y)] for x, y in zip(a, b)]
[['A', 'B', 7], ['A', 'D', 5], ['B', 'C', 8], ['B', 'D', 9], ['B', 'E', 7], ['C', 'E', 5], ['D', 'E', 15], ['D', 'F', 6], ['E', 'F', 8], ['E', 'G', 9], ['F', 'G', 11]]
如果您真的需要一个元组,只需使用
元组(…)
构造函数

tuple(x.split('-') + [int(y)])
mylist=[('A','B',7),('A','D',5),('B','C',8),('B','D',9),('B','E',7),('C','E',5),('D','E',15),('D','F',6),('E','F',8),('E','G',9),('F','G',11)]

避免拆分

[(k[0][0],k[0][-1],k[1]) for k in zip(a,b)]
甚至

[(x[0],x[-1],y) for x,y in zip(a,b)]

但这真的很愚蠢,没有错误处理。

我希望列表中的元素是元组而不是列表。然后执行
[结果中a的元组(a)
]谢谢。只要有可能,我就会接受你的回答。@user2032220你只使用单个字符吗?如果是这样的话,您可以通过
@反垄断法使用该解决方案。不,这只是一个示例。我使用多个字符的城市名称。两件事:不要使用
list
作为名称,它只会与内置名称混淆。第二,整数应该是整数,而不是字符串。谢谢你指出这一点。我将编辑。+1个好主意(假设只有单个字符),同时添加
int(k[1])
。另外,如果在zip(a,b)中有x,y的
,这看起来会更好。
[(x[0],x[-1],y) for x,y in zip(a,b)]
>>> [ tuple(val.split('-') + [int(b[idx])]) for idx, val in enumerate(a) ]
[('A', 'B', 7), ('A', 'D', 5), ('B', 'C', 8)]