我有嵌套的形式如下列表:嵌套列表 - 字符串为浮动
my_list = [['Some1', '2', '3.6', '4.5', 'GB2', '6'],
['Some2', '3.9', '4', '5', 'HG5', '7.3'],
['Some3', '4', '5', '6.1', 'H2D', '8.9']]
每个子列表中的每个元素是一个字符串,但我想,把所有纯粹的数字字符串浮动。
所以我尝试下面的代码:
for row in my_list:
for k, item in enumerate(row):
if k in (1, 2, 3, 5):
item = float(item)
不幸的是,嵌套列表保持不变。我确定我犯了一个简单的错误,但我看不到它。任何帮助(和上下文)将不胜感激。
这将在这种情况下被认为是更Python,for循环或列表理解像DSM建议创建my_list2?是一个还是另一个首选?我的实际列表可以达到100,000 +行。 – donopj2 2012-03-19 18:17:13
@PatrickD:这两个答案做不同的事情。我的答案中的代码突变了原来的列表。 DSM答案中的代码创建了一个新列表。另一个区别是,我的答案中的代码硬码需要转换的列,并且如果某些值无法转换,则会出错。 DSM答案中的代码尝试转换每个项目,并且如果转换成功,则使用浮点值而不是原始值。如果您需要这些语义,则此答案中的代码更快并消耗更少的内存。 – 2012-03-19 18:21:58