質問: eval(line) _function(line2) このように書くと当然なのですが数値データ全体でなく1行1行の数値に対して処理が行われてしまいます. radlinesによって1行ずつevalを行い,最後に数値全体に対して処理を行うにはどうすればよいでしょうか? dataから1行ずつ抜き出しevalを行い,再びdata2に1行ずつ並べてゆき,最後にdata2に対して処理ができれば良いなと考えているのですが,上手いやり方がわからず困っております. ご教授よろしくお願いします.
回答: セキュリティの関係・速度の関係などの理由から `eval` の利用は極力避けたほうが無難です。 ``` # なんか適当な処理 def _function(x): return x * 2 # with を使うと f.close() を自動で読んでくれます with open('data.txt', 'r') as f: # map(fn, list) を使うと list の各要素に対して fn を適用してくれます # 返り値は Python 2 では list, Python 3 では generator です # lambda x: ... は無名関数です result = map(lambda x: _function(float(x)), f.readlines()) # Python 3 の場合返り値が generator なので使う直前に明示的に list 化します print(list(result)) ``` という感じにすると Pythonista っぽいです