集合的创建,并集,交集,输出
时间: 2024-06-12 18:03:40 浏览: 9
集合是由一组独特的元素组成的对象。在Python中,可以使用大括号{}或set()函数来创建集合。例如:
```python
# 创建集合
set1 = {1, 2, 3, 4}
set2 = set([3, 4, 5, 6])
# 输出集合
print(set1) # {1, 2, 3, 4}
print(set2) # {3, 4, 5, 6}
```
集合的并集是指包含两个集合中所有不重复元素的集合。可以使用union()方法或|运算符来计算两个集合的并集。例如:
```python
# 计算并集
set3 = set1.union(set2)
set4 = set1 | set2
# 输出并集
print(set3) # {1, 2, 3, 4, 5, 6}
print(set4) # {1, 2, 3, 4, 5, 6}
```
集合的交集是指包含两个集合中共同元素的集合。可以使用intersection()方法或&运算符来计算两个集合的交集。例如:
```python
# 计算交集
set5 = set1.intersection(set2)
set6 = set1 & set2
# 输出交集
print(set5) # {3, 4}
print(set6) # {3, 4}
```
相关问题
用C语言集合的创建,并集,交集,输出
集合的创建可以使用C语言中的数组来实现,例如:
```c
int set1[] = {1, 2, 3, 4, 5};
int set2[] = {3, 4, 5, 6, 7};
```
这里分别创建了两个集合set1和set2,分别包含了5个元素。
接下来,我们可以使用循环和条件判断来实现集合的并集和交集操作。例如:
```c
#include <stdio.h>
int main() {
int set1[] = {1, 2, 3, 4, 5};
int set2[] = {3, 4, 5, 6, 7};
int union_set[10];
int intersection_set[10];
int union_size = 0;
int intersection_size = 0;
// union
for (int i = 0; i < 5; i++) {
union_set[union_size++] = set1[i];
}
for (int i = 0; i < 5; i++) {
int in_set1 = 0;
for (int j = 0; j < 5; j++) {
if (set2[i] == set1[j]) {
in_set1 = 1;
break;
}
}
if (!in_set1) {
union_set[union_size++] = set2[i];
}
}
printf("Union:\n");
for (int i = 0; i < union_size; i++) {
printf("%d ", union_set[i]);
}
printf("\n");
// intersection
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (set1[i] == set2[j]) {
intersection_set[intersection_size++] = set1[i];
break;
}
}
}
printf("Intersection:\n");
for (int i = 0; i < intersection_size; i++) {
printf("%d ", intersection_set[i]);
}
printf("\n");
return 0;
}
```
这里使用了两个数组union_set和intersection_set来存储集合的并集和交集,使用两个变量union_size和intersection_size来记录集合的大小。
在进行并集操作时,我们先将set1中的所有元素加入到union_set中,然后遍历set2中的元素,如果某个元素不在set1中,就将它加入到union_set中。
在进行交集操作时,我们遍历set1和set2中的所有元素,如果某个元素同时出现在两个集合中,就将它加入到intersection_set中。
最后,我们使用循环输出union_set和intersection_set中的元素即可。
用C语言实现集合的创建,并集,交集,输出
以下是使用C语言实现集合的创建、并集、交集和输出的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct _set {
int elements[MAX_SIZE];
int size;
} Set;
void createSet(Set *set, int *arr, int size) {
set->size = size;
for (int i = 0; i < size; i++) {
set->elements[i] = arr[i];
}
}
Set unionSet(Set set1, Set set2) {
Set result;
int i = 0, j = 0, k = 0;
while (i < set1.size && j < set2.size) {
if (set1.elements[i] < set2.elements[j]) {
result.elements[k++] = set1.elements[i++];
} else if (set1.elements[i] > set2.elements[j]) {
result.elements[k++] = set2.elements[j++];
} else {
result.elements[k++] = set1.elements[i++];
j++;
}
}
while (i < set1.size) {
result.elements[k++] = set1.elements[i++];
}
while (j < set2.size) {
result.elements[k++] = set2.elements[j++];
}
result.size = k;
return result;
}
Set intersectSet(Set set1, Set set2) {
Set result;
int i = 0, j = 0, k = 0;
while (i < set1.size && j < set2.size) {
if (set1.elements[i] < set2.elements[j]) {
i++;
} else if (set1.elements[i] > set2.elements[j]) {
j++;
} else {
result.elements[k++] = set1.elements[i++];
j++;
}
}
result.size = k;
return result;
}
void printSet(Set set) {
printf("{ ");
for (int i = 0; i < set.size; i++) {
printf("%d ", set.elements[i]);
}
printf("}\n");
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {3, 4, 5, 6, 7};
Set set1, set2, set_union, set_intersect;
createSet(&set1, arr1, sizeof(arr1) / sizeof(int));
createSet(&set2, arr2, sizeof(arr2) / sizeof(int));
printf("Set 1: ");
printSet(set1);
printf("Set 2: ");
printSet(set2);
set_union = unionSet(set1, set2);
printf("Set union: ");
printSet(set_union);
set_intersect = intersectSet(set1, set2);
printf("Set intersect: ");
printSet(set_intersect);
return 0;
}
```
输出:
```
Set 1: { 1 2 3 4 5 }
Set 2: { 3 4 5 6 7 }
Set union: { 1 2 3 4 5 6 7 }
Set intersect: { 3 4 5 }
```