Python:如何将一个列表粘贴到另一个列表中
请帮我解决这个问题: 我有一个包含数字和列表的列表:Python:如何将一个列表粘贴到另一个列表中,python,list,Python,List,请帮我解决这个问题: 我有一个包含数字和列表的列表: list = [1,2,[3,4,5],6,7,[8,9]] 我想得到的只是一个数字列表(mergin在父列表中包含了列表): 例如: 使用递归和: 请记住,不要在自己的类型后面列出名称:)。使用递归和: 请记住不要在自己的类型后面列出姓名:)。我个人使用这种方法: 这是递归展平的功能版本,它处理元组和列表,并允许您插入任何位置参数的混合。返回按arg by arg顺序生成整个序列的生成器: flatten = lambda *n: (e
list = [1,2,[3,4,5],6,7,[8,9]]
我想得到的只是一个数字列表(mergin在父列表中包含了列表):
例如:
使用递归和:
请记住,不要在自己的类型后面列出名称:)。使用递归和:
请记住不要在自己的类型后面列出姓名:)。我个人使用这种方法: 这是递归展平的功能版本,它处理元组和列表,并允许您插入任何位置参数的混合。返回按arg by arg顺序生成整个序列的生成器:
flatten = lambda *n: (e for a in n
for e in (flatten(*a) if isinstance(a, (tuple, list)) else (a,)))
用法:
l1 = ['a', ['b', ('c', 'd')]]
l2 = [0, 1, (2, 3), [[4, 5, (6, 7, (8,), [9]), 10]], (11,)]
print list(flatten(l1, -2, -1, l2))
['a', 'b', 'c', 'd', -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
这在Python3.x和Python2.x中都可以正常工作
这里有一个同样的正则表达式解决方案
import re
def Flatten(TheList):
a = str(TheList)
b,crap = re.subn(r'[\[,\]]', ' ', a)
c = b.split()
d = [int(x) for x in c]
return(d)
我个人使用这种方法: 这是递归展平的功能版本,它处理元组和列表,并允许您插入任何位置参数的混合。返回按arg by arg顺序生成整个序列的生成器:
flatten = lambda *n: (e for a in n
for e in (flatten(*a) if isinstance(a, (tuple, list)) else (a,)))
用法:
l1 = ['a', ['b', ('c', 'd')]]
l2 = [0, 1, (2, 3), [[4, 5, (6, 7, (8,), [9]), 10]], (11,)]
print list(flatten(l1, -2, -1, l2))
['a', 'b', 'c', 'd', -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
这在Python3.x和Python2.x中都可以正常工作
这里有一个同样的正则表达式解决方案
import re
def Flatten(TheList):
a = str(TheList)
b,crap = re.subn(r'[\[,\]]', ' ', a)
c = b.split()
d = [int(x) for x in c]
return(d)
compiler.ast.flatte
只是一个递归函数(使用type(foo)is list
),所以您的第二个解决方案要好得多。@Blender-Eh,它更整洁;)。但是,是的,我可能会删除它,因为它是不推荐的,如果不是instance(I,Iterable):
而不是“I”,你可能是指“parent”@Haidro和thnxsolution@c00p3r.web是的,我做了,谢谢你编辑:)compiler.ast.flatte
只是一个递归函数(使用type(foo)is list
),所以您的第二个解决方案要好得多。@Blender-Eh,它更整洁;)。但是,是的,我可能会删除它,因为它是不推荐的,如果不是instance(I,Iterable):
而不是“I”,你可能是指“parent”@Haidro和thnxsolution@c00p3r.web是的,我做了,谢谢你编辑:)@msw:看看OP的标题。当你不知道正确的单词时,很难搜索到东西。我看到一个大签名上写着“标记为重复”,在评论中重复这个有什么意义?我只是不知道它叫“扁平化”。不知情不是犯罪。每个人都做mistakes@msw:看看OP的标题。当你不知道正确的单词时,很难搜索到东西。我看到一个大签名上写着“标记为重复”,在评论中重复这个有什么意义?我只是不知道它叫“扁平化”。不知情不是犯罪。每个人都会犯错——1你就不能有一个正常的功能吗?为什么要在lambda中插入一条长线,并将其命名为紧跟其后的变量。这不是我说的lambda
关键字的目的匿名函数'-1。如果L=[1,{2,3},4,(5,6,[7,8,9),{10,11,12,13}]
会怎么样?@Haidro:这个问题只需要方括号就可以了。@alexpinho98:我想使用它会更整洁,而且符合python的禅宗<代码>美丽胜于丑陋。无论如何,为了更清楚地了解lambda的用法,你最好看看。是的,regex无疑是一个更好的观点。。。总之,编辑了answer@TusharMakkar我认为公认答案的代码比lambda
版本更可读、更美观、更易于解释<代码>lambda
有它的用途,我在很多方面都使用过它,比如非常短的“代数”函数和“map”和“filter”函数,但我认为在这种情况下,“lambda”不是正确的方法。一个好的经验法则可能是:“如果语句长度超过任意数量(比如80个)的字符,并且它涉及递归:使用普通函数,否则:使用` lambda'.-1难道你不能只使用一个常规函数吗?”?为什么要在lambda中插入一条长线,并将其命名为紧跟其后的变量。这不是我说的lambda
关键字的目的匿名函数'-1。如果L=[1,{2,3},4,(5,6,[7,8,9),{10,11,12,13}]
会怎么样?@Haidro:这个问题只需要方括号就可以了。@alexpinho98:我想使用它会更整洁,而且符合python的禅宗<代码>美丽胜于丑陋。无论如何,为了更清楚地了解lambda的用法,你最好看看。是的,regex无疑是一个更好的观点。。。总之,编辑了answer@TusharMakkar我认为公认答案的代码比lambda
版本更可读、更美观、更易于解释<代码>lambda
有它的用途,我在很多方面都使用过它,比如非常短的“代数”函数和“map”和“filter”函数,但我认为在这种情况下,“lambda”不是正确的方法。一个好的经验法则可能是:“如果语句长度超过任意数量(比如80个)的字符,并且涉及递归:使用普通函数,否则:使用` lambda'”。