gpt4 book ai didi

list - 我很难理解列表

转载 作者:行者123 更新时间:2023-12-05 00:21:47 24 4
gpt4 key购买 nike

我只是想要一个简单的解释,真的。
我有一大堆函数,我的一个列表理解的行为非常奇怪。

sequence_ [writeArray arr (x, y) a | x <- xs, a <- as]
where xs = [1,3,2]
as = ["10", "8", "7"]
y是恒定的(作为参数传入)并且我已经删除了很多其他函数,因为它们返回了我所期望的。

我有一个看起来像的数组
1,1,1
1,1,1
1,1,1

我希望得到(例如)
1,1,10
1,1,8
1,1,7

但相反我得到
1,1,7
1,1,7
1,1,7

有人可以提供任何建议吗?

最佳答案

对两个变量的列表推导不会同时迭代这两个变量,而是独立地迭代(你得到绑定(bind)值的所有组合):

Prelude> [(x, y) | x <- [0..3], y <- [4..6]]
[(0,4),(0,5),(0,6),(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]

因此,您正在对以下操作进行排序:
sequence_ [writeArray arr (1, y) 10,
writeArray arr (3, y) 10,
writeArray arr (2, y) 10,
writeArray arr (1, y) 8,
writeArray arr (3, y) 8,
writeArray arr (2, y) 8,
writeArray arr (1, y) 7,
writeArray arr (3, y) 7,
writeArray arr (2, y) 7]

所以你要写所有的 10,用 8 覆盖它们,然后用 7 再次覆盖它们。

正如 luqui 在评论中建议的那样,试试这个:
sequence_ [writeArray arr (x, y) a | (x, a) <- (zip xs as)]
where xs = [1,3,2]
as = ["10", "8", "7"]

关于list - 我很难理解列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com