teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

表現の修正

2019/09/22 16:20

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -7,8 +7,8 @@
7
7
  **勘違いしていそうな点**
8
8
  range(x, y) は x以上y未満の整数を送出します。
9
9
 
10
- **抜けている点**
10
+ **明らかなバグ**
11
- b_pairs毎回上書きしてます。
11
+ b_pairs毎回上書きして、前の周回のデータを吹っ飛ばしてます。
12
12
 
13
13
  ---
14
14
  こんなのを書きたかったのでは。何が違うか見比べてみて下さい。

2

修正

2019/09/22 16:20

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -21,7 +21,8 @@
21
21
  b_pairs = []
22
22
  for i in range(2, n+1):
23
23
  b_pairs += list(itertools.combinations(b, i))
24
-
24
+ # 単に b_pairs += itertools.combinations(b, i) でも可
25
+
25
26
  print(b_pairs)
26
27
  ```
27
28
 

1

追記

2019/09/22 16:19

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -28,4 +28,17 @@
28
28
  **実行結果** [Wandbox](https://wandbox.org/permlink/fJ8bgVnEuyTOAWJu)
29
29
  ```
30
30
  [(1, 2), (1, 3), (2, 3), (1, 2, 3)]
31
+ ```
32
+
33
+ おまけ
34
+ ---
35
+ こういうときは[more-itertools](https://more-itertools.readthedocs.io/en/stable/index.html)が便利です。
36
+ ```Python
37
+ >>> list(more_itertools.powerset(b))
38
+ [(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
39
+ >>> [s for s in more_itertools.powerset(b)]
40
+ [(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
41
+ >>>
42
+ >>> [s for s in more_itertools.powerset(b) if len(s) >= 2]
43
+ [(1, 2), (1, 3), (2, 3), (1, 2, 3)]
31
44
  ```