回答編集履歴

2

追記

2019/06/21 12:55

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -20,6 +20,8 @@
20
20
 
21
21
  ```
22
22
 
23
+
24
+
23
25
  実行例
24
26
 
25
27
  ![イメージ説明](ac397336eacb0d9cf84a870565feee4a.png)
@@ -27,3 +29,39 @@
27
29
 
28
30
 
29
31
  is_first() の定義を調整することで、他の条件で要素の順番を保って取り出すことができます。
32
+
33
+
34
+
35
+ 追記:
36
+
37
+ 計算量はへっていないかもしれませんが、行数をさらに少なくしてみました。
38
+
39
+
40
+
41
+ y.py
42
+
43
+ ```python3
44
+
45
+ data = [1, 6, 1, 10, "apple", "orange", "apple", "grape"]
46
+
47
+
48
+
49
+ z = {e: idx for idx, e in reversed(list(enumerate(data))) if type(e) == str}
50
+
51
+ data2 = [e for idx, e in enumerate(data) if z.get(e) == None or z.get(e) == idx]
52
+
53
+ print(data2)
54
+
55
+ ```
56
+
57
+
58
+
59
+ ![イメージ説明](fd81bb8944a27a6395ac7b95a4c198b1.png)
60
+
61
+
62
+
63
+ data を後ろかスキャンしながら 要素 -> 出現位置 のハッシュをつくっていっています。
64
+
65
+ (値は、最初にその要素が出現した位置になります)
66
+
67
+ こうして作ったハッシュをつかって data から重複値を取り除いていきます。

1

誤字

2019/06/21 12:55

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -26,4 +26,4 @@
26
26
 
27
27
 
28
28
 
29
- is_first() の定義を調整することで、他の条件で要素の順番を保って取り出すことができます。
29
+ is_first() の定義を調整することで、他の条件で要素の順番を保って取り出すことができます。