我有一个存储在列表中的项目列表作为列表的列表。如果找到,我想从每个项目中删除一个特定字符。如果我只使用列表的第一个元素,我就能做到。但是,在使用 for 循环时出现“IndexError:列表索引超出范围”。
这是我的 list 。
list1 = [['2.6x3.65'],[],['2','2.9x1.7','2.5x1.3']]
这就是我对第一个元素的处理方式。
if('x' in list1[0][0]):
rep1 = re.sub('x', ', ', list1[0][0])
这为我提供了 2.6、3.65 的字符串格式输出,稍后我可以将其转换为 float 。
但是,当我使用以下代码实现相同的 using for 循环时:
for i in list1[i][i]:
if('x' in list1[i][i]):
rep2 = re.sub('x', ', ', list1[i][i])
它在使用 for 循环时给出“IndexError: list index out of range”。
我的预期结果是如下所示:
list2 = [[2.6, 3.65],[],[2, 2.9, 1.7, 2.5, 1.3]]
请您参考如下方法:
您可以使用嵌套列表理解:
list1 = [['2.6x3.65'], [], ['2', '2.9x1.7', '2.5x1.3']]
list2 = [sum([list(map(float, i.split('x'))) for i in l], []) for l in list1]
输出:
[[2.6, 3.65], [], [2.0, 2.9, 1.7, 2.5, 1.3]]
不要将 map() 与列表理解混合:
list2 = [[float(e) for i in l for e in i.split('x')] for l in list1]
