使用不同的格式转换转换列表中的项目



我有以下列表列表(用lol表示(:

[['365', '336', '365', 'E<;EjD'],
['365', '336', '365', 'E<;EkD'],
['365', '336', '365', 'E<;F0D'],
['0', '0', '335', 'E<;GaQ'],
['0', '0', '335', 'E<;GbQ']]

我试图以这样的方式转换lol,即要转换为int的子列表的每个前三个字符串和要转换为datetime的相同子列表的每一个最后字符串(dateConverter()是将字符串转换为白天(。

我希望输出以下内容:

[[365, 336, 365, '2021-12-11T21:58:20'],
[365, 336, 365, '2021-12-11T21:58:20'],
[365, 336, 365,  '2021-12-11T21:59:20'],
[0, 0, 335, '2021-12-11T22:0:20'],
[0, 0, 335, '2021-12-11T22:1:20']]

我尝试了以下方法:

  1. 我知道如何将前三个字符串转换为int
[list(map(int, li[:-1])) for li in lol]
  1. 我知道如何将最后一个字符串转换为daytime
list(map(dateConverter, [li[-1] for li in lol]))
  1. I不知道如何使用map函数或任何其他方式实现二合一。我尝试了以下操作,但没有成功
[list(map(int, dateConverter, li[:-1], li[-1])) for li in lol]

这个怎么样?

lol = [['365', '336', '365', 'E<;EjD'],
['365', '336', '365', 'E<;EkD'],
['365', '336', '365', 'E<;F0D'],
['0', '0', '335', 'E<;GaQ'],
['0', '0', '335', 'E<;GbQ']]

converted = [
[int(x) if i < 3 else date_converter(x) for (i, x) in enumerate(li)] for li in lol
]

你可以试试这个:

[int(t[0]),int(t[1]),int(t[2]),dateConverter(t[3]) for t in lol]

另一个选项,使用自定义lambda:

convert = lambda record: list(map(int, [record[:3]])) + [dateConverter(record[4])]
result = map(convert, lol)

easy-peasy(:

[[*map(int,a)]+[dateConverter(b)] for *a,b in lol]

最新更新