Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为任何给定列表切换元素?_Python_Python 3.x_List - Fatal编程技术网

Python 如何为任何给定列表切换元素?

Python 如何为任何给定列表切换元素?,python,python-3.x,list,Python,Python 3.x,List,假设我有一个列表:[5,6,4,3] 我要做的是将任何字符5替换为6,并将6替换为5 因此,列表最终将如下所示: ["6", "5", "4", "3"] 我想对所有可能输入的列表执行此操作。这意味着并非所有列表中都有元素5和6,但我想切换5和6,以获得这些元素 注意:列表中的元素是字符串元素。不是整数 我一直在考虑使用if语句和.replace,但这改变了5和6,然后又改变了它 示例: if "5" in list1: list1.replace("5", "6") if "6" i

假设我有一个列表:[5,6,4,3]

我要做的是将任何字符5替换为6,并将6替换为5

因此,列表最终将如下所示:

["6", "5", "4", "3"]
我想对所有可能输入的列表执行此操作。这意味着并非所有列表中都有元素5和6,但我想切换5和6,以获得这些元素

注意:列表中的元素是字符串元素。不是整数

我一直在考虑使用if语句和.replace,但这改变了5和6,然后又改变了它

示例:

if "5" in list1:
    list1.replace("5", "6")
if "6" in list1:
    list1.replace("6", "5")
正如你所看到的,这只是将其替换回来。它不起作用。如果有人能帮我解决这个问题就太好了

注意:如果列表中的元素是1532,则列表中的5也应替换为字符串。反之亦然

另一个例子:

firstlist = ["125", "673", "222", "65"]`
输出:

firstlist = ["126", "573", "222", "56"]

在假设列表中没有下划线和制表符的情况下,这可以工作:

>>> list1 = ["126", "573", "222", "56"]
>>> str1 = "\t".join(list1)
>>> str1.replace("5", "_").replace("6", "5").replace("_", "6").split('\t')
['125', '673', '222', '65']

这里有一个通用函数,它通过迭代字符串中的字符并键入dict来定位每个可交换元素的伙伴来执行交换。这种技术可以扩展到任意数量的您想要包含的交换;只需将交换dict设置为一个参数,而不是x和y


您可以使用简单的for并替换每个字符,如下所示:

firstlist=[1256732265] def开关A、b、值: 输出=[] 对于值中的值\u str: output.append 参加 如果b==v else b如果a==v else v代表值中的v 返回输出 打印开关'5','6',第一个列表 >>> ['126', '573', '222', '56']
我基于@0的解决方案:

t = ['254', '556', '056', '30565']
[a.replace('5', '-').replace('6', '5').replace('-', '6') for a in t]
Output:
['264', '665', '065', '30656']

如果5s和6s的数量不相等怎么办?比如说,[1,5,6,6]?@ggorlen 5和6的数量无关紧要。你应该把这些元素相互替换。好的,那就是[1,6,5,5],是的。这是正确的。
t = ['254', '556', '056', '30565']
[a.replace('5', '-').replace('6', '5').replace('-', '6') for a in t]
Output:
['264', '665', '065', '30656']