gpt4 book ai didi

tuples - Julia 编程 - 从集合中的索引创建元组

转载 作者:行者123 更新时间:2023-12-04 22:56:15 24 4
gpt4 key购买 nike

我有一组 S={1,2,3}。我正在尝试创建一个形式为 (i,j,1) 的元组,其中 i 和 j 是 S 的元素。当 S={1,2,3} 时,我的元组集(比如 E)应该是 { (1,2,1),(2,1,1),(1,3,1),(3,1,1),(3,2,1),(2,3,1)}。我尝试了以下方式。

    for i in S
for j in S
E = Set()
E = [(i,j,1),(j,i,1), i!=j]
print(E)
end
end

但它没有给我所需的结果。我得到的是

Any[(2,2,1),(2,2,1),false]Any[(2,3,1),(3,2,1),true]Any[(2,1,1),(1,2,1),true]Any[(3,2,1),(2,3,1),true]Any[(3,3,1),(3,3,1),false]Any[(3,1,1),(1,3,1),true]Any[(1,2,1),(2,1,1),true]Any[(1,3,1),(3,1,1),true]Any[(1,1,1),(1,1,1),false]



有人可以帮我得到所需的结果吗?

最佳答案

您可以通过 list comprehension 实现您想要的:

[(i,j,1) for i in S for j in S if i != j]

请注意,这为您提供了一个数组,但您可以将其传递给 set 构造函数;或者,您可以使用 ' generator ' 直接地:
Set( (i,j,1) for i in S for j in S if i != j )

我做错了什么?

这部分代码:
E = Set()
E = [(i,j,1),(j,i,1), i!=j]

不会做你认为它会做的事情。我想你是故意的 E作为“将”作为“设置”对象,然后将您预计将其“分配”将其“分配”为E.(此外,为什么您预期正常元素作为选择测试的原因, 但是无所谓)。

但显然这行不通,因为每次你给 E 赋值时,您正在用 [a reference to] 新对象替换其先前的内容。

如果你想通过仔细地一个一个地“附加”你想要的元素来解决这个问题,这是可能的,但你应该这样做:
E = Set()
for i in S, j in S
if i != j
push!(E, (i,j,1), (j,i,1));
end
end

(还要注意这里 julia 的特殊“嵌套 for 循环”语法)

关于tuples - Julia 编程 - 从集合中的索引创建元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44625182/

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