Python中如何在嵌套列表内交换元素索引?
解决Python中嵌套列表内层元素交换的问题
嘿,我懂你的需求了——你不是要调换外层列表里子列表的顺序,而是要把每个内层子列表里的元素两两交换,对吧?你的示例里每个子列表都是两个元素,咱们来看看几种简单又实用的实现方式:
方法1:列表推导式(最Pythonic的简洁写法)
这是处理这类问题最常用的方式,既清晰又高效。我们可以遍历原列表的每个子列表,对每个子列表进行反转(对于两个元素来说,反转就等于交换),或者直接指定索引交换:
a = [[1,2], [3,4], [5,6]] # 方式A:用切片反转子列表(适合任意长度的子列表,若只需交换前两个元素则不适用) b = [sublist[::-1] for sublist in a] # 方式B:明确指定索引交换(仅适用于子列表长度为2的场景,更直观) # b = [[sublist[1], sublist[0]] for sublist in a] print(b) # 输出: [[2, 1], [4, 3], [6, 5]]
方法2:原地修改原列表(不创建新列表)
如果你不需要保留原列表a,想直接修改它的内容,可以用循环配合Python的元组解包来交换元素:
a = [[1,2], [3,4], [5,6]] for sublist in a: # 直接交换子列表的第0和第1个元素 sublist[0], sublist[1] = sublist[1], sublist[0] print(a) # 现在a的内容就是: [[2, 1], [4, 3], [6, 5]]
方法3:用map函数配合lambda(另一种简洁写法)
如果你喜欢函数式编程的风格,也可以用map来处理每个子列表:
a = [[1,2], [3,4], [5,6]] b = list(map(lambda s: s[::-1], a)) print(b) # 输出同样符合预期
额外说明
如果你的内层子列表长度不止2,比如是[1,2,3]这种,而你只想交换前两个元素,那可以调整写法:
# 比如子列表是[1,2,3],交换前两个后变成[2,1,3] b = [[s[1], s[0]] + s[2:] for s in a]
内容的提问来源于stack exchange,提问作者YM1
相关产品推荐
相关产品推荐

