[英]How do I append a list with sublists inside of it?
我需要做的就是用所有这些值创建1个列表,而不包含子列表。
example = ['a', ['c', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]]
newArray = []
def func(array):
for i in array:
for z in i:
newArray.append(z)
print(func(example))
这里的结果将是:['a','c',1、3,'f',7,[4,'4'],{'lalala':111}]。 当我添加3rd时,它会说“ int”对象不可迭代。 我是否需要以某种方式检查项目是int还是string,然后跳过它们? 还是我错过了什么?
PS我相信这是通过递归函数完成的,但是我对它们不了解:(
这是递归函数使列表变平的一个示例:
def flatten(l):
if type(l) is list:
if not l:
return []
if len(l) == 1 :
return flatten(l[0])
else:
return flatten(l[0]) + flatten(l[1:])
else:
return [l]
结果为['a','c',1、3,'f',7、4,'4',{'lalala':111}]
使用递归函数。 请享用!
码:
example = ['a', ['c', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]]
newArray = []
def super_extend(v):
if type(v) is list:
[super_extend(x) for x in v if x is not None]
if type(v) is dict:
{k:super_extend(v) for k,v in v.items() if v is not None}
if type(v) is str or isinstance(v, int) or isinstance(v, float) :
newArray.append(v)
super_extend(example)
print(newArray)
输出:
['a', 'c', 1, 3, 'f', 7, 4, '4', 111]
[Finished in 0.078s]
如果您不希望字典保留为字典,而只希望值。 您可以使用它。 但是,如果您想保留密钥,则只需使用:
if type(v) is dict:
{super_extend(v):super_extend(k) for k,v in v.items() if v is not None}
那么输出将是:
['a', 'c', 1, 3, 'f', 7, 4, '4', 'lalala', 111]
[Finished in 0.077s]
使用递归生成器函数:
def flatten(l):
if isinstance(l, list):
for x in l:
yield from flatten(x)
else:
yield l
>>> list(flatten(example))
['a', 'c', 1, 3, 'f', 7, 4, '4', {'lalala': 111}]
list
对象提供了两种将新项目添加到给定list
:
list.append(x):在列表末尾添加一个项目。 等效于a [len(a):] = [x]。
list.extend(iterable):通过附加来自iterable的所有项来扩展列表。 等效于a [len(a):] =可迭代的。
old_list = ['a', ['c', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]]
new_list = []
for element in old_list:
new_list.extend(element)
print(new_list)
结果
['a', 'c', 1, 3, 'f', 7, [4, '4'], {'lalala': 111}]
也许您正在寻找这样的东西:
example = ['a', ['c', 1, 3], ['f', 7, [4, '4']], [{'lalala': 111}]]
def func(array):
newArray = []
for i in array:
if((type(i)==int) or (type(i)==str)):
newArray.append(i)
elif(type(i)==dict ):
keys = i.keys()
values = i.values()
newArray.append(keys[0])
newArray.append(values[0])
else:
for z in i:
newArray.append(z)
return newArray
print(func(example))
print(func(func(example)))
print(func(func(func(example))))
结果:
['a', 'c', 1, 3, 'f', 7, [4, '4'], {'lalala': 111}]
['a', 'c', 1, 3, 'f', 7, 4, '4', 'lalala', 111]
['a', 'c', 1, 3, 'f', 7, 4, '4', 'lalala', 111]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.