【发布时间】:2016-10-31 21:46:25
【问题描述】:
我想从多字段字符串列表中创建一个列表列表,并想知道是否可以在理解中这样做。
输入:
inputs = ["1, foo, bar", "2, tom, jerry"]
期望的输出:
[[1, "foo", "bar"], [2, "tom", "jerry"]]
在推导式中拆分字符串很容易:
>>> [s.split(",") for s in inputs]
[['1', ' foo', ' bar'], ['2', ' tom', ' jerry']]
但我无法弄清楚如何在理解内拆分字符串后访问列,因为它似乎需要变量赋值。以下不是有效的 Python,但说明了我正在寻找的内容:
[[int(x), y.strip(), z.strip() for x,y,z = s.split(",")] for s in inputs]
or
[[int(v[0]), v[1].strip(), v[2].strip() for v = s.split(",")] for s in inputs]
有没有办法在理解中分配变量,以便输出可以由变量的函数组成?循环是微不足道的,但通过转换输入来生成列表确实看起来像是一项“理解力”任务。
outputs = []
for s in inputs:
x,y,z = s.split(",")
outputs.append([int(x), y.strip(), z.strip()])
【问题讨论】:
-
您可以使用索引访问元素。对于
[['1', ' foo', ' bar'], ['2', ' tom', ' jerry']],lst[0][0]将是1,lst[0][1]将是foo等等。如果您需要变量,您可能需要将它们存储为带有键的映射。 -
[ ... for x, y, z in (s.split(', ') for s in inputs)]