python - 如何将 X 列表和 Y 列表组合成一个(X,Y)列表?
问题描述
我有两个清单:
X = [1.4 ,3.2, 5.8, 2.1, 3.5]
Y = [2.1, 5.6, 1.2, 1.3, 4.6]
如何从X
and中的所有内容制作一个数组Y
?
我试过这个:
for i in X:
X_Y[i] = {X[i], Y[i]}
但这给了我一个错误list indices must be integers or slices, not float
所以然后我尝试zip
了,但它只是给了我一个位置zip at ...
我将不胜感激任何帮助!
解决方案
您可以使用zip
和列表推导来获取 (X, Y) 元组的列表。
XY = [i for i in zip(X, Y)]
# [(1.4, 2.1), (3.2, 5.6), (5.8, 1.2), (2.1, 1.3), (3.5, 4.6)]
较短的版本(另请参阅下面的 Nathan 解决方案)
XY = list(zip(X, Y))
您的解决方案中的问题:当您这样做时for i in X:
,您基本上是在迭代X
. 所以在第一次迭代中,i
将是1.4
然后你做X_Y[i]
。第一个问题是您没有初始化空列表X_Y
,第二个问题是列表的索引不能是浮点数。此外,要将元素添加到列表中,您可以使用append
. X[i], Y[i]
对于第一次迭代意味着X[1.4], Y[1.4]
不正确。
如何让你的代码工作?
您首先初始化一个空列表。然后您遍历X
andY
列表的长度,然后append
逐一对如下:
X_Y = []
for i in range(len(X)):
X_Y.append((X[i], Y[i]))
使用列表理解的这三行代码的一个衬里将是
X_Y = [(X[i], Y[i]) for i in range(len(X))]
另一种衬垫使用map
和lambda
功能。在这里,您创建一个 lambda 函数,该函数接受两个参数:x
andy
并在实际列表中执行操作(x, y)
元素X
和Y
. list()
作用于映射生成器以获得最终列表X_Y
。
X_Y = list(map(lambda x, y: (x, y), X, Y))
推荐阅读
- mysql - SQL:where 子句中的 avg() 函数
- javascript - 平滑的角度绑定更新
- java - 在 Dijkstra 的最短路径算法对类中打印所有路径会引发错误
- javascript - 添加和删除类后,为错误的类调用 JQuery Click 事件
- java - Java 从 JButton 读取输入
- powershell - 如何在 Powershell 中测试用户和密码 HTTP 身份验证 NTLM
- java - java process builder执行mutt命令,主题和附件名称具有非ascii字符
- reactjs - 使用 TypeScript 创建 React 上下文以共享状态
- report - 如何解决 Qweb 报告中的重叠问题?
- laravel - 如何伪造社交名流`userFromToken`方法进行测试?