回答編集履歴

1

説明追加

2021/09/14 03:46

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -9,3 +9,39 @@
9
9
  です。
10
10
 
11
11
  あるいは同じことをif文で書いてください。
12
+
13
+
14
+
15
+ 理由
16
+
17
+
18
+
19
+ list(a)は、他のシーケンス型のオブジェクトであるaをlistオブジェクトに変換します。
20
+
21
+
22
+
23
+ a = 'AAA', 'BBB'
24
+
25
+
26
+
27
+ a = ('AAA', 'BBB')
28
+
29
+ と同じ意味です。aにtupleオブジェクトを代入しているのでlist(a)は['AAA', 'BBB']
30
+
31
+ となります。
32
+
33
+
34
+
35
+ a = 'AAA'
36
+
37
+ は、aにシーケンス型の一種であるテキストシーケンス型のstrオブジェクトを代入しているので、それを分解した['A','A','A']となります。
38
+
39
+
40
+
41
+ したがって、strオブジェクトを特別扱いするにはtype(a)==strという条件で切り分けるしかありません。
42
+
43
+
44
+
45
+ 詳しくは、[シーケンス型 --- list, tuple, range
46
+
47
+ ](https://docs.python.org/ja/3/library/stdtypes.html#sequence-types-list-tuple-range)と[テキストシーケンス型 --- str](https://docs.python.org/ja/3/library/stdtypes.html#text-sequence-type-str)をお読みください。