交换列表列表中的两个值 (python)
Swap two values in a list of lists (python)
我想交换列表列表中两个元素的每次出现。我看过以前的答案,但它们与我想要做的不同。此外,我正在为此目的寻找一种简洁明了的方式(最好是列表理解)。
输入
my_list = [[1,2], [1,3], [1,4], [3,2]]
输出
my_list = [[2,1], [2,3], [2,4], [3,1]]
我正在尝试做这样的事情但没有成功:
[1 if i==2 else i, 2 if i==1 else i for i in my_list]
这是一个使用列表理解的简单解决方案:
my_list = [[1,2], [1,3], [1,4], [3,2]]
a = 1
b = 2
my_list = [[a if i==b else b if i==a else i for i in j] for j in my_list]
print(my_list) # [[2, 1], [2, 3], [2, 4], [3, 1]]
如果你想添加更多的元素来替换你可以使用字典:
swap = {
1: 2,
2: 1
}
my_list = [[swap.get(i, i) for i in j] for j in my_list]
其他人可能会用更好的答案回答,但这行得通。
def check(num):
if num == 1:
return 2
elif num == 2:
return 1
else:
return num
out = [[check(j) for j in i] for i in my_list]
如果您需要将 1
与 2
交换,此 one-liner 将起作用:
>>> my_list = [[1,2], [1,3], [1,4], [3,2]]
>>> print([[(lambda k: (1 if val == 2 else 2) if val in [1, 2] else val)(val) for val in sub_list] for sub_list in my_list])
[[2, 1], [2, 3], [2, 4], [3, 1]]
从右到左阅读第二行...分块阅读!
我想交换列表列表中两个元素的每次出现。我看过以前的答案,但它们与我想要做的不同。此外,我正在为此目的寻找一种简洁明了的方式(最好是列表理解)。
输入
my_list = [[1,2], [1,3], [1,4], [3,2]]
输出
my_list = [[2,1], [2,3], [2,4], [3,1]]
我正在尝试做这样的事情但没有成功:
[1 if i==2 else i, 2 if i==1 else i for i in my_list]
这是一个使用列表理解的简单解决方案:
my_list = [[1,2], [1,3], [1,4], [3,2]]
a = 1
b = 2
my_list = [[a if i==b else b if i==a else i for i in j] for j in my_list]
print(my_list) # [[2, 1], [2, 3], [2, 4], [3, 1]]
如果你想添加更多的元素来替换你可以使用字典:
swap = {
1: 2,
2: 1
}
my_list = [[swap.get(i, i) for i in j] for j in my_list]
其他人可能会用更好的答案回答,但这行得通。
def check(num):
if num == 1:
return 2
elif num == 2:
return 1
else:
return num
out = [[check(j) for j in i] for i in my_list]
如果您需要将 1
与 2
交换,此 one-liner 将起作用:
>>> my_list = [[1,2], [1,3], [1,4], [3,2]]
>>> print([[(lambda k: (1 if val == 2 else 2) if val in [1, 2] else val)(val) for val in sub_list] for sub_list in my_list])
[[2, 1], [2, 3], [2, 4], [3, 1]]
从右到左阅读第二行...分块阅读!