python - 如何在 python 中反转嵌套列表中的字符串列表?

我有一组字符串和嵌套在列表中的嵌套字符串列表。

list1 = ['abc','def',[['abc','def']],['abc','def']].

我想得到类似如下所示的输出:

[['fed','cba'], [['fed','cba']], 'fed', 'cba']

当我使用内置 reverse() 方法和 [::-1] 的传统方法时。如下图:

list1 = ['abc', 'def', [['abc', 'def']], ['abc', 'def']]
[x[::-1] for x in list1][::-1]
# and got output as [['def', 'abc'], [['abc', 'def']], 'fed', 'cba']

请给我解释一下?

最佳答案

您的问题是您需要反转主列表、此列表中的每个子列表以及您在途中遇到的每个字符串。您需要一些更通用的方法,可能使用递归:

def deep_reverse(x):
    if isinstance(x, list):
        x = [deep_reverse(subx) for subx in x] # reverse every element
        x = x[::-1] # reverse the list itself
    elif isinstance(x, str):
        x = x[::-1]
    return x

list1 = ['abc','def',[['abc','def']],['abc','def']]
reversed_list1 = deep_reverse(list1) 
# [['fed', 'cba'], [['fed', 'cba']], 'fed', 'cba']

https://stackoverflow.com/questions/67899721/

相关文章:

android - 臭名昭著的高度 :100% issue on chrome for androi

bash - 在组合前面的数据的同时在多行中添加值

javascript - onClick 从类更改为函数

python - 如何找到 pandas 数据框字符串列中的最大单词数?

c++ - 如何删除结构 vector 的重复项 C++

r - ggplot : create a facet grid with free scales

perl - 如何使用 Perl IPC::Run3 从子进程读取标准输出和标准错误?

java - 如何在 Java 数组上设置新的属性或方法?

javascript - 如何从标称字符串中删除 0,但不从 javascript 中的小数中删除

python - 是否有一个 Binance API 端点来关闭所有头寸?