回答編集履歴

3

編集

2017/10/25 17:15

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  アルファベットが複数文字のときは、次のような関数を作ると良さそうですね。
40
40
 
41
- (数字を含まい場合はindex errorで落ちますが)
41
+ (その気にればindex errorやrecursion errorを起こせますが、普通に使う分には問題ないです。)
42
42
 
43
43
  ```Python
44
44
 

2

追記

2017/10/25 17:15

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -31,3 +31,41 @@
31
31
  ['A1', 'B1', 'A2', 'B2', 'A3', 'B3', 'A4', 'B4', 'A5', 'B5', 'A6', 'B6', 'A7', 'B7', 'A8', 'B8', 'A9', 'B9', 'A10', 'B10']
32
32
 
33
33
  ```
34
+
35
+
36
+
37
+ ---
38
+
39
+ アルファベットが複数文字のときは、次のような関数を作ると良さそうですね。
40
+
41
+ (数字を含まない場合はindex errorで落ちますが)
42
+
43
+ ```Python
44
+
45
+ def find_first_num(arg, i=0):
46
+
47
+ if not arg[0].isalpha():
48
+
49
+ return i
50
+
51
+ return find_first_num(arg[1:], i+1)
52
+
53
+ ```
54
+
55
+
56
+
57
+ こんな風に、英字と数字を分離できます。
58
+
59
+ ```Python
60
+
61
+ >>> hoge = 'LouiS0616'
62
+
63
+ >>> hoge[:find_first_num(hoge)]
64
+
65
+ 'LouiS'
66
+
67
+ >>> hoge[find_first_num(hoge):]
68
+
69
+ '0616'
70
+
71
+ ```

1

修正

2017/10/25 17:13

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -24,10 +24,10 @@
24
24
 
25
25
  >>>
26
26
 
27
- >>> AB.sort(key=lambda x: int(x[1:]))
27
+ >>> AB.sort(key=lambda x: (int(x[1:]), x[0]))
28
28
 
29
29
  >>> print(AB)
30
30
 
31
- ['A1', 'B1', 'A2', 'B2', 'B3', 'A3', 'A4', 'B4', 'B5', 'A5', 'A6', 'B6', 'A7', 'B7', 'A8', 'B8', 'B9', 'A9', 'A10', 'B10']
31
+ ['A1', 'B1', 'A2', 'B2', 'A3', 'B3', 'A4', 'B4', 'A5', 'B5', 'A6', 'B6', 'A7', 'B7', 'A8', 'B8', 'A9', 'B9', 'A10', 'B10']
32
32
 
33
33
  ```