【发布时间】:2015-09-01 13:23:18
【问题描述】:
所以我在一个列表中有列表:
woot = [['abc','efg', '4.3', '5.7', '80085'],['aba','bab', '1.0', '9.0', '3.0'], ... , ... ]
每个嵌套列表都是相同的:前 2 个元素是由字母组成的字符串,其余元素是由数字组成的字符串。
我正在尝试将所有字符串编号转换为浮点数并将每个嵌套列表的字符串编号合并到其自己的列表中(最终成为双嵌套列表),因此最终结果如下所示:
final = [['abc','efg', [ 4.3, 5.7, 80085]], ['aba','bab', [ 1.0, 9.0, 3.0]] , ... , ... ]
所以我的方法是使用列表推导将字符串数字转换为浮点数并将这些数字和字母字符串拆分为单独的列表并合并它们。
bloop = [[float(x) for x in y[2:]] for y in woot]
bleep = [[x for x in y[:2]] for y in woot]
所以我最终得到:
bloop = [[ 4.3, 5.7, 8005.0],[ 1.0, 9.0, 3.0], ... , ... ]
bleep = [['abc','efg'],['aba','bab'], ... , ... ]
这就是我崩溃的地方,似乎无法“合并”这些列表。
final = []
for i in bleep:
final.append(i)
for i in bloop:
final.append(i)
不幸的是,这只是将列表放在一起:
[['abc','efg'],['aba','bab'],[ 4.3, 5.7, 8005.0],[ 1.0, 9.0, 3.0]]
【问题讨论】:
-
完全按照您的要求完成了...
-
旁注:
[[x for x in y[:2]] for y in woot]等价于[y[:2] for y in woot] -
另一个旁注:尽量不要滥用列表理解。在大多数情况下,它可以为您节省一些字符,但也可能使您的代码不可读且速度慢。
-
你是建议我坚持写出循环还是使用其他功能?我正在尝试练习一些操作嵌套循环的思维障碍,而不是求助于使用图书馆中的一些魔法工具,尽管现在我开始对列表理解感到疯狂,因为它似乎很容易失去我的思路用它。