列表理解与拆分

Cla*_*nga 2 python

输入: ["0:start:0","1:start:2","1:end:5","0:end:6"]

输出: [[0, "start", 0], [1, "start", 2], ... ]

这个[item.split(":") for item in logs]不会转换为int。尝试了各种方法,但无法使其正常工作:[(int(a), b, int(c)) for item in logs for (a,b,c) in item.split(":")]

谢谢!

Ran*_*vis 5

您可以在列表推导式中使用生成器表达式:

a = ["0:start:0","1:start:2","1:end:5","0:end:6"]
b = [[int(x[0]), x[1], int(x[2])] for x in (item.split(":") for item in a)]
print(b)
Run Code Online (Sandbox Code Playgroud)

输出:

[[0, 'start', 0], [1, 'start', 2], [1, 'end', 5], [0, 'end', 6]]
Run Code Online (Sandbox Code Playgroud)

我的回答受到启发:列表理解拆分循环变量


zvo*_*one 5

为了清楚起见,我会这样做,分两步:

logs = ["0:start:0", "1:start:2", "1:end:5", "0:end:6"]
split_logs = (log.split(':') for log in logs)
result = [(int(a), b, int(c)) for a, b, c in split_logs]
Run Code Online (Sandbox Code Playgroud)