Python 如何为任何给定列表切换元素?
假设我有一个列表:[5,6,4,3] 我要做的是将任何字符5替换为6,并将6替换为5 因此,列表最终将如下所示: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
["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']