如何用列表推导式与链式for语句简化不等元素配对数组代码
用列表推导式简化元素对生成代码
嘿,这事儿很简单!咱们直接把原来的嵌套循环逻辑转换成列表推导式就行,完全不用导入任何模块。
先回顾下你的需求:从数组x和y里生成所有元素不相等的元素对(以列表形式),替代原来的嵌套for循环写法。
正确的列表推导式实现
x = [1,2,3,4] y = [2,4,6] my_list = [[a, b] for a in x for b in y if a != b] print(my_list)
逻辑说明
这个推导式的顺序和你原来的嵌套循环完全对应:
- 先遍历
x中的每一个元素a - 再遍历
y中的每一个元素b - 只保留满足
a != b的元素对,将其以[a, b]的形式加入最终列表
运行这段代码后,输出和你原来的代码完全一致:
[[1, 2], [1, 4], [1, 6], [2, 4], [2, 6], [3, 2], [3, 4], [3, 6], [4, 2], [4, 6]]
顺便说下你注释里的错误写法
你原来注释的my_list+=[(a,b) for (a,b) in (x,y) if (a!=b)]是行不通的,因为(x,y)是一个包含两个列表的元组,遍历它的时候,a会被赋值为整个x列表,b会被赋值为整个y列表,这显然不是你想要的逐个元素遍历,所以这个写法根本得不到正确的元素对。
内容的提问来源于stack exchange,提问作者user5179531
相关产品推荐
相关产品推荐

