Ube*_*per 1 python list-comprehension
当我执行以下列表理解时,我最终得到嵌套列表:
channel_values = [x for x in [ y.split(' ') for y in
open(channel_output_file).readlines() ] if x and not x == '\n']
Run Code Online (Sandbox Code Playgroud)
基本上我有一个由以下内容组成的文件:
7656 7653 7649 7646 7643 7640 7637 7634 7631 7627 7624 7621 7618 7615
8626 8623 8620 8617 8614 8610 8607 8604 8600 8597 8594 8597 8594 4444
<snip several thousand lines>
Run Code Online (Sandbox Code Playgroud)
此文件的每一行都以新行终止.
基本上我需要将每个数字(它们都由一个空格分隔)添加到列表中.
有更好的方法通过列表理解来做到这一点吗?
Luk*_*ský 16
您不需要列表推导:
channel_values = open(channel_output_file).read().split()
Run Code Online (Sandbox Code Playgroud)
这样做:
channel_values = open(channel_output_file).read().split()
Run Code Online (Sandbox Code Playgroud)
split()将根据包含的空格进行拆分' ' '\t' and '\n'.它会将所有值拆分为一个列表.
如果你想要整数值,你可以这样做:
channel_values = map(int, open(channel_output_file).read().split())
Run Code Online (Sandbox Code Playgroud)
或列表推导:
channel_values = [int(x) for x in open(channel_output_file).read().split()]
Run Code Online (Sandbox Code Playgroud)