我有以下列表列表(用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']]
我尝试了以下方法:
- 我知道如何将前三个字符串转换为
int
[list(map(int, li[:-1])) for li in lol]
- 我知道如何将最后一个字符串转换为
daytime
list(map(dateConverter, [li[-1] for li in lol]))
- 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]