回答編集履歴

3

追記

2018/11/11 07:08

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- whileで処理するのも一つの手でしょう。
31
+ in-placeで処理したい(元のリストを変更したい)のであれば、whileで処理するのも一つの手でしょう。
32
32
 
33
33
 
34
34
 
@@ -46,4 +46,4 @@
46
46
 
47
47
  ```
48
48
 
49
- これだと毎回`len(li)`が評価されてエラーになりません(その分遅いですが)。
49
+ これだと毎回`len(li)`が評価されてエラーになりません(その分遅いですが。もっとも、`len(li)`をループ開始前に評価して変数に格納し、delのたびに-1していく実装にするのも簡単です。毎回リストの長さを求めるよりはたぶん速いでしょう)。

2

追記

2018/11/11 07:08

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -11,6 +11,18 @@
11
11
  if len(x) == 10:
12
12
 
13
13
  result.append(x)
14
+
15
+ ```
16
+
17
+
18
+
19
+ これは内包表記でも書けます。その方がシンプルです。
20
+
21
+
22
+
23
+ ```python
24
+
25
+ result = [x for x in li if len(x) == 10]
14
26
 
15
27
  ```
16
28
 

1

追記

2018/11/11 07:06

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -13,3 +13,25 @@
13
13
  result.append(x)
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ whileで処理するのも一つの手でしょう。
20
+
21
+
22
+
23
+ ```python
24
+
25
+ i = 0
26
+
27
+ while i < len(li):
28
+
29
+ if len(li[i]) != 10:
30
+
31
+ del li[i]
32
+
33
+ i += 1
34
+
35
+ ```
36
+
37
+ これだと毎回`len(li)`が評価されてエラーになりません(その分遅いですが)。