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

回答編集履歴

1

キャスト部分を追記

2018/07/26 05:12

投稿

tachikoma
tachikoma

スコア3601

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