回答編集履歴

1

キャスト部分を追記

2018/07/26 05:12

投稿

tachikoma
tachikoma

スコア3601

test CHANGED
@@ -2,6 +2,54 @@
2
2
 
3
3
  with open("win.txt", 'r') as f:
4
4
 
5
- lines = list(f.readlines())
5
+ # lines = list(f.readlines())
6
+
7
+ lines = f.read().split("\n")
6
8
 
7
9
  ```
10
+
11
+
12
+
13
+ ----
14
+
15
+ 一行に2つ以上の数字があることを念頭に、各数字をintにキャストする方法は次の通りです。intにキャストできない文字が含まれているとエラーになります。
16
+
17
+
18
+
19
+ 愚直に二重ループを書く場合。
20
+
21
+ ```Python
22
+
23
+ with open("tmp.txt") as f:
24
+
25
+ lines = f.read().split("\n") # 改行コードごとに分割
26
+
27
+
28
+
29
+ numbers = []
30
+
31
+ for line in lines: # 一行ごとに処理する
32
+
33
+ tmp =[]
34
+
35
+ for n in line: # 一行に含まれる文字1つずつに対して処理する
36
+
37
+ tmp.append( int(n) )
38
+
39
+ numbers.append( tmp )
40
+
41
+ ```
42
+
43
+
44
+
45
+ 難しく書くと次のように1行になります。
46
+
47
+ ```Python
48
+
49
+ with open("tmp.txt") as f:
50
+
51
+ lines = f.read().split("\n")
52
+
53
+ numbers = [list(map(int, list(line))) for line in lines] # 二重ループと同じ結果
54
+
55
+ ```