在Python中用列表推导处理嵌套列表?

15 投票
5 回答
18695 浏览
提问于 2025-04-15 13:45

我有以下代码,用来在Python中处理一个嵌套列表,生成一个结构相同的列表。

>>> nested_list = [['Hello', 'World'], ['Goodbye', 'World']]
>>> [map(str.upper, x) for x in nested_list]
[['HELLO', 'WORLD'], ['GOODBYE', 'WORLD']]

这样可以仅用列表推导式来完成吗(不使用map函数)?

5 个回答

4

使用Map确实是一种更简洁的方法来实现你想要的功能。不过,你也可以把列表推导式嵌套起来,也许这正是你想要的做法?

[[ix.upper() for ix in x] for x in nested_list]
6

记住Python的哲学:

通常来说,做一件事的方法不止一种,而且可能有好几种很明显的做法。

** 注:已编辑以确保准确性。

总之,我更喜欢用map。

from functools import partial
nested_list = map( partial(map, str.upper), nested_list )
16

对于嵌套列表,你可以使用嵌套的列表推导式:

nested_list = [[s.upper() for s in xs] for xs in nested_list]

我个人觉得在这种情况下使用map会更简洁,尽管我通常更喜欢列表推导式。所以这完全取决于你,反正两种方法都能实现。

撰写回答