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

回答編集履歴

2

追記

2019/12/24 10:33

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -21,4 +21,15 @@
21
21
  appeared.add(e)
22
22
 
23
23
  print(lis)
24
- ```
24
+ ```
25
+
26
+ 追記
27
+ ---
28
+ こんなふうにも書けます。
29
+ ```Python
30
+ work_set = set()
31
+ lis = [e + '_2' if e in work_set else work_set.add(e) or e for e in lis]
32
+ print(lis)
33
+ ```
34
+
35
+ でもあんまり行儀の良いコードでは無いですね。避けた方が良いでしょう。

1

追記

2019/12/24 10:33

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -7,4 +7,18 @@
7
7
  lis[i] += "_2"
8
8
 
9
9
  print(lis)
10
+ ```
11
+
12
+ lisがもっと長いなら、次のように別途記憶領域を用意した方が効率的です。
13
+ ```Python
14
+ lis = ["hoge","hogehoge","fuga","fugafuga","hoge","fuga"]
15
+
16
+ appeared = set()
17
+ for i, e in enumerate(lis):
18
+ if e in appeared:
19
+ lis[i] += "_2"
20
+ else:
21
+ appeared.add(e)
22
+
23
+ print(lis)
10
24
  ```