回答編集履歴

3

簡単に書けました。

2018/12/16 12:58

投稿

退会済みユーザー
test CHANGED
@@ -58,6 +58,16 @@
58
58
 
59
59
 
60
60
 
61
+ あ、もっと簡単に書けました。
62
+
63
+ ```python
64
+
65
+ s = {x for x in range(1,10,2)}
66
+
67
+ ```
68
+
69
+
70
+
61
71
  資料にもあるとおり、内包表記と同じことを外側のループで書くこともできます。
62
72
 
63
73
  ```python

2

内包表記の説明を追加しました。

2018/12/16 12:58

投稿

退会済みユーザー
test CHANGED
@@ -25,3 +25,57 @@
25
25
 
26
26
 
27
27
  自分は初心者なので、もっと良い回答があると思います。
28
+
29
+
30
+
31
+ **内包表記**
32
+
33
+ 集合の定義に外延と内包があるのはご存知でしょう。10未満の奇数の集合を考えます。
34
+
35
+ 外延 {1,3,5,7,9} 集合の要素をすべて列挙する
36
+
37
+ 内包 {x|0<x<10,xは整数,xは奇数} 集合の性質を定義する
38
+
39
+
40
+
41
+ pythonも、集合を定義するのに2通りの方法があります。
42
+
43
+ ```python
44
+
45
+ s = {1,3,5,7,9} # 外延
46
+
47
+ s = {x for x in range(1,10) if x % 2 == 1} # 内包
48
+
49
+ ```
50
+
51
+
52
+
53
+ 内包の書き方は以下の通りです。
54
+
55
+ for x in range(1,10) は10未満の自然数を表します。ループを記述。
56
+
57
+ if x % 2 == 1 は奇数を表します。条件を記述。
58
+
59
+
60
+
61
+ 資料にもあるとおり、内包表記と同じことを外側のループで書くこともできます。
62
+
63
+ ```python
64
+
65
+ s = set()
66
+
67
+ for x in range(1,10):
68
+
69
+ if x % 2 == 1:
70
+
71
+ s.add(x)
72
+
73
+
74
+
75
+ s
76
+
77
+ ```
78
+
79
+
80
+
81
+ 外側にループを書くと誤りをおかしやすいので、内包表記の方が良い。また内包表記が速いそうです。

1

エラーの原因を追加しました。

2018/12/16 12:22

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,20 @@
1
+ **エラーの原因**
2
+
1
- pは集合の集合なのでtとの共通部分はとれません。内包表記を使ってみました。
3
+ pは集合の集合なのでtとの共通部分はとれません。
4
+
5
+
6
+
7
+ 集合の集合どおしの共通部分をとればエラーは出ません。しかし目的は果たせません。
8
+
9
+ tt = FiniteSet(t) # 集合の集合を作る。
10
+
11
+ tt.intersect(p)
12
+
13
+
14
+
15
+ **解決策**
16
+
17
+ 内包表記を使ってみました。
2
18
 
3
19
 
4
20