Extend: merge strings on a list from other lists (or variables) at the same time
本问题已经有最佳答案,请猛点这里访问。
我有3个不同的列表,需要合并它们。当您只需要用一个元素扩展一个列表或添加一个inteire列表时,这很容易。但是,如果有更多的列表或者在中间添加一个变量,这似乎是不可能的。
1 2 3 | list1 = [ 'a', 'b', 'c'] list2 = [ 'd', 'e', 'f'] list3 = ['g', 'h', 'i'] |
只添加一个列表:
1 | list1.extend(list3) |
号
返回:
1 | ['a', 'b', 'c', 'g', 'h', 'i'] |
添加两个列表:
1 | list1.extend((list2,list3)) |
。
在另一个列表中返回两个列表:
1 | ['a', 'b', 'c', ['d', 'e', 'f'], ['g', 'h', 'i']] |
使用运算符"+"添加两个列表:
1 | list1.extend((list2 + list3)) |
。
退换商品
1 | ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] |
。
但如果你需要这样做:
1 | list1.extend(('test' + list2 + fetch[0] + list3 + etc, etc, etc)) |
不起作用。无法连接。
添加循环的临时解决方案可以是:
1 2 3 4 | for l1 in list2: list1.extend(l1) for l2 in list3: list1.extend(l2) |
。
最终拥有:
1 | ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] |
。
显然是浪费线路和周期
有没有更有效的方法不用外部模块来存档?
编辑:简单列表的例子只是为了理解我基本上需要什么。真正的问题是在一行".extend"上添加字符串、数字或索引。
解决了的:
韦恩·沃纳把我带到正确的方向来连接不同类型的元素。
1 2 3 4 5 6 | list1 = [ 'a', 'b', 'c'] list2 = [ 'd', 'e', 'f'] list3 = ['g', 'h', 'i'] for other_list in (['test'], str(1), list2[2], list2[1]): list1.extend(other_list) |
。
结果:
1 | ['a', 'b', 'c', 'test', '1', 'f', 'e'] |
号
如果您正在寻找一种用
1 2 3 | my_list = ['a', 'b', 'c'] for other_list in (some_iterable, some_other_iterable, another_iterable): my_list.extend(other_list) |
我想不出比这更合理的解决办法了。
只需对要添加的每个列表使用
1 2 | list1.extend(list2) list1.extend(list3) |
您可以在其中一个列表中添加其他两个列表:
1 2 3 4 5 | list1 = [ 'a', 'b', 'c'] list2 = [ 'd', 'e', 'f'] list3 = ['g', 'h', 'i'] list3.extend(lis1 + list2) |
号