如何用Python列表推导式实现元组列表转整数列表?
用列表推导式实现元组列表转整数映射列表
你可以用嵌套列表推导式一行代码完成转换,完全替代原来的嵌套for循环:
edge_list = [('D','G'),('E','D'),('E','G'), ('C','E'),('B','D'),('A','C'),('A','B'),('C','D'),('G','F')] map = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7} int_edges = [[map[val] for val in edge] for edge in edge_list]
这段代码逻辑和你原来的循环完全一致:
- 外层推导式遍历
edge_list中的每一个元组edge - 内层推导式遍历当前元组里的每个元素
val,通过字典map映射为对应的整数,组成子列表 - 最终所有子列表被收集到
int_edges中,得到目标结果:[[4, 7], [5, 4], [5, 7], [3, 5], [2, 4], [1, 3], [1, 2], [3, 4], [7, 6]]
如果希望子元素保持元组类型(而非列表),只需把内层的方括号改成圆括号:
int_edges = [tuple(map[val] for val in edge) for edge in edge_list]
结果会变为:[(4, 7), (5, 4), (5, 7), (3, 5), (2, 4), (1, 3), (1, 2), (3, 4), (7, 6)]
内容的提问来源于stack exchange,提问作者onion117
相关产品推荐
相关产品推荐

