ここでは、以前にタブ区切りの値を読み込んで、すでに行ごとに分割されている大きなテキスト ファイルに対して、ipython で 2 行のコードを実行しています。
In [30]: data = [(int(e[0]),e[1],e[2],int(e[3])) for e in d.split('\t') for d in dat]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/max/verk/data/build/x86_64/bin/ipython in <module>()
----> 1 data = [(int(e[0]),e[1],e[2],int(e[3])) for e in d.split('\t') for d in dat]
ValueError: invalid literal for int() with base 10: 'T'
In [31]: data = [(int(e[0]),e[1],e[2],int(e[3])) for e in (d.split('\t') for d in dat)]
In [32]: len(data)
Out[32]: 173503
In [33]:
... それで、ここで何が起こったのですか?30 行目のコードが機能しないのはなぜですか? また、解決策がリスト内包表記に関連しているように見えるのに、文字列を int に変換するときにエラーが発生しているように見えるのはなぜですか?