📜  设置在 Julia

📅  最后修改于: 2021-11-25 04:46:59             🧑  作者: Mango

Julia 中的 Set 是元素的集合,就像数组、字典等其他集合一样。 集合与数组不同,因为集合是唯一元素的无序集合,而数组中严格记住元素的顺序。此外,数组和字典可能包含重复值,但集合不能。集合中的每个元素都必须是唯一的。集合是可变数据类型,这意味着它的值可以被更改、删除、覆盖等。

集合可以包含任何数据类型的元素。就像其他集合一样,在 Julia 中,在声明元素之前定义集合的数据类型并不是强制性的。 Julia 会自动分析元素并定义 Set 的数据类型。 Julia 不允许单独访问集合的元素,因为它是一个无序集合,因此任何元素都没有固定的索引。

Sets-in-Julia

创建一个集合

Julia 中的集合可以使用预定义的关键字Set() 创建。此关键字接受放置在方括号 ([]) 中的元素,并通过根据元素的数据类型定义其数据类型来创建一个集合。

句法:

Set_name = Set([Value1, Value2, Value3, ....]) 
Julia
# Julia program to illustrate
# the use of Sets
 
# Creating an empty set
Set1 = Set()
println("Empty Set: ", Set1)
 
# Creating a set with Integer values
Set2 = Set([1, 2, 3, 4, 5, 2, 4, 6])
println(Set2)
 
# Creating a set with mixed datatypes
Set3 = Set([1, 2, 3, "Hello", "Geeks"])
println(Set3)


Julia
# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Geeks", "For", "Geeks"])
println("\nInitial set:")
println(Set1)
   
# Accessing element using
# for loop
println("\nElements of set: ")
for i in Set1
    println(i)
end
   
# Checking the element
# using in keyword
println(in("For", Set1))


Python
# Julia program to demonstrate
# Accessing of elements in a set
    
# Creating a set
Set1 = Set(["Hello", "Geeks", 10])
println("\nInitial set:")
println(Set1)
  
# Adding an element to the set
Set1 = push !(Set1, "Welcome")
println("\nSet after adding one element:\n", Set1)
  
# Adding a range of elements
# using for loop
for i in 1:5
    push !(Set1, i)
end
println("\nSet after adding range of elements:\n", Set1)


Python
# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 10])
println("\nSet1:")
println(Set1)
 
# Creating another set
Set2 = Set([1, 2, 3, 4])
println("\nSet2:")
println(Set2)
 
# Performing Merge using union operation
println("\nMerged Set after union Operation:")
println(union(Set1, Set2))
 
# Existing set after union operation
println("\nSet1 after union operation:")
println(Set1)


Python3
# Sets taken from previous example
 
# Performing Merge using union ! operation
println("\nMerged Set after union ! Operation:")
println(union !(Set1, Set2))
 
# Existing set after union ! operation
println("\nSet1 after union ! operation:")
println(Set1)


Python
# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 1, 2, 3])
println("\nSet1:")
println(Set1)
 
# Creating another set
Set2 = Set([1, 2, 3, 4, "Geeks"])
println("\nSet2:")
println(Set2)
 
# Performing intersection using 'intersect' operation
println("\nSet after intersect Operation:")
println(intersect(Set1, Set2))
 
# Existing set after intersect operation
println("\nSet1 after intersect operation:")
println(Set1)


Python3
# Performing intersection using 'intersect !' operation
println("\nSet after intersect ! Operation:")
println(intersect !(Set1, Set2))
 
# Existing set after intersect ! operation
println("\nSet1 after intersect ! operation:")
println(Set1)


Python
# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 1, 2, 3])
println("\nSet1:")
println(Set1)
 
# Creating another set
Set2 = Set([1, 2, 3, 4, "Geeks"])
println("\nSet2:")
println(Set2)
 
# Finding Difference using 'setdiff' operation
println("\nSet after 'setdiff' Operation:")
println(setdiff(Set1, Set2))
 
# Existing set after 'setdiff' operation
println("\nSet1 after 'setdiff' operation:")
println(Set1)


Python3
# Finding Difference using 'setdiff !' operation
println("\nSet after 'setdiff !' Operation:")
println(setdiff !(Set1, Set2))
 
# Existing set after 'setdiff !' operation
println("\nSet1 after 'setdiff !' operation:")
println(Set1)


Python
# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 1, 2, 3])
println("\nInitial set:")
println(Set1)
 
# Removing an element from the set
Set1 = delete !(Set1, "Hello")
println("\nSet after deleting one element:\n", Set1)
 
# Deleting whole set
for i in Set1
    Set1 = delete !(Set1, i)
end
 
println("\nEmpty set after deleting all elements:\n", Set1)


输出:

Sets-in-Julia-Output-01

访问集合中的元素

不能通过引用索引值来访问集合项,因为集合是无序的,项没有固定的索引。但是您可以使用 for 循环遍历集合项,或者使用in()关键字询问集合中是否存在指定的值。

朱莉娅

# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Geeks", "For", "Geeks"])
println("\nInitial set:")
println(Set1)
   
# Accessing element using
# for loop
println("\nElements of set: ")
for i in Set1
    println(i)
end
   
# Checking the element
# using in keyword
println(in("For", Set1))

输出:

Sets-in-Julia-Output-02

集合的方法

添加新元素:

集合是 Julia 中的可变类型集合,因此,可以使用某些预定义的关键字来修改它们的值。 Julia 允许使用“push!”在集合中添加新元素命令。向集合中添加元素与向数组中添加元素非常相似,唯一的区别是,与数组不同,集合中的元素不能添加到特定索引上,因为集合是无序的。

句法:

push!(Set_name, Value)

Python

# Julia program to demonstrate
# Accessing of elements in a set
    
# Creating a set
Set1 = Set(["Hello", "Geeks", 10])
println("\nInitial set:")
println(Set1)
  
# Adding an element to the set
Set1 = push !(Set1, "Welcome")
println("\nSet after adding one element:\n", Set1)
  
# Adding a range of elements
# using for loop
for i in 1:5
    push !(Set1, i)
end
println("\nSet after adding range of elements:\n", Set1)

输出:

Sets-in-Julia-Output-03

集合的并集:

Julia 允许使用‘union’关键字合并两个集合的元素。联合运算将两个集合作为参数,并将结果作为另一个集合给出,该集合具有两个集合的元素。除非返回值存储在两个集合中的任何一个中,否则两个集合的实际值不会改变。联合函数的另一个变体是联合! .这两个关键字执行类似的操作,但唯一的区别是union!函数将用新的合并集覆盖现有集。

句法:

union(Set1, Set2)
or 
union!(Set1, Set2)

示例 1:执行联合操作

Python

# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 10])
println("\nSet1:")
println(Set1)
 
# Creating another set
Set2 = Set([1, 2, 3, 4])
println("\nSet2:")
println(Set2)
 
# Performing Merge using union operation
println("\nMerged Set after union Operation:")
println(union(Set1, Set2))
 
# Existing set after union operation
println("\nSet1 after union operation:")
println(Set1)

输出:

Sets-in-Julia-Output-04

示例 2:执行联合!手术

蟒蛇3

# Sets taken from previous example
 
# Performing Merge using union ! operation
println("\nMerged Set after union ! Operation:")
println(union !(Set1, Set2))
 
# Existing set after union ! operation
println("\nSet1 after union ! operation:")
println(Set1)

输出:

Sets-in-Julia-Output-05

从上面的代码可以看出, union!执行合并操作后的运算符更新了 Set1 的现有内容,但联合运算符不对现有集合进行任何更改,仅执行合并操作。

集合的交集

Julia 允许使用‘intersect’关键字查找两个集合的公共元素。交运算将两个集合作为参数,并将结果作为具有两个集合的公共元素的另一个集合给出。除非返回值存储在两个集合中的任何一个中,否则两个集合的实际值不会改变。 intersect函数的另一个变体是intersect! .这两个关键字执行类似的操作,但唯一的区别是相交!函数将用新的相交集覆盖现有集。

句法:

intersect(Set1, Set2)
or 
intersect!(Set1, Set2)

示例 1:执行相交操作

Python

# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 1, 2, 3])
println("\nSet1:")
println(Set1)
 
# Creating another set
Set2 = Set([1, 2, 3, 4, "Geeks"])
println("\nSet2:")
println(Set2)
 
# Performing intersection using 'intersect' operation
println("\nSet after intersect Operation:")
println(intersect(Set1, Set2))
 
# Existing set after intersect operation
println("\nSet1 after intersect operation:")
println(Set1)

输出:

Sets-in-Julia-Output-06

示例 2:执行相交!手术

蟒蛇3

# Performing intersection using 'intersect !' operation
println("\nSet after intersect ! Operation:")
println(intersect !(Set1, Set2))
 
# Existing set after intersect ! operation
println("\nSet1 after intersect ! operation:")
println(Set1)

输出:

Sets-in-Julia-Output-07

从上面的代码可以看出,相交!执行交集后的运算符更新了Set1的现有内容,但交集运算符不对现有集合进行任何更改,仅执行交集。

两组之间的差异

Julia 允许使用“setdiff”关键字在两个集合之间查找不同的元素。该运算符将两个集合作为参数,并将结果作为具有两个集合的不同元素的另一个集合给出。除非返回值存储在两个集合中的任何一个中,否则两个集合的实际值不会改变。 setdiff函数的另一个变体是setdiff! .这两个关键字执行类似的操作,但唯一的区别是setdiff!函数将用新集合覆盖现有集合。

句法:

setdiff(Set1, Set2)
or 
setdiff!(Set1, Set2)

示例 1:执行 setdiff 操作

Python

# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 1, 2, 3])
println("\nSet1:")
println(Set1)
 
# Creating another set
Set2 = Set([1, 2, 3, 4, "Geeks"])
println("\nSet2:")
println(Set2)
 
# Finding Difference using 'setdiff' operation
println("\nSet after 'setdiff' Operation:")
println(setdiff(Set1, Set2))
 
# Existing set after 'setdiff' operation
println("\nSet1 after 'setdiff' operation:")
println(Set1)

输出:

Sets-in-Julia-Output-08

示例 2:执行 setdiff!手术

蟒蛇3

# Finding Difference using 'setdiff !' operation
println("\nSet after 'setdiff !' Operation:")
println(setdiff !(Set1, Set2))
 
# Existing set after 'setdiff !' operation
println("\nSet1 after 'setdiff !' operation:")
println(Set1)

输出:

Sets-in-Julia-Output-09

从上面的代码可以看出, setdiff!运算符在执行操作后更新了 Set1 的现有内容,但setdiff运算符不会对现有集合进行任何更改,仅给出不同元素的集合。

从集合中删除元素:

从集合中删除元素是一项非常简单的任务。 Julia 提供了一个预定义的关键字“delete!”从集合中删除特定元素。就像添加过程一样,由于其无序性质,无法从任何特定索引中删除元素。确切的元素将传递给删除!函数作为参数以将其从集合中删除。

句法:

delete!(Set_name, value)

Python

# Julia program to demonstrate
# Accessing of elements in a set
   
# Creating a set
Set1 = Set(["Hello", "Geeks", 1, 2, 3])
println("\nInitial set:")
println(Set1)
 
# Removing an element from the set
Set1 = delete !(Set1, "Hello")
println("\nSet after deleting one element:\n", Set1)
 
# Deleting whole set
for i in Set1
    Set1 = delete !(Set1, i)
end
 
println("\nEmpty set after deleting all elements:\n", Set1)

输出:

Sets-in-Julia-Output-10

设置方法

Methods Description
intersect() Used to construct the intersection of the specified sets
intersect!() Used to intersect all passed in sets and overwrite s with the result
issetequal() Used to determine whether the two specified sets a and b have the same elements or not
setdiff() Used to returns the elements which are in first set but not in second set
setdiff!() Used to remove each element of set s which are also in the specified iterable
symdiff() Used to construct the symmetric difference of elements in the passed in sets
symdiff!() Used to construct the symmetric difference of the passed in sets, and overwrite the specified set s with the result
union() Used to construct the union of the specified sets
union!() Used to construct the union of passed in sets and overwrite s with the result