我有以下列表:
a = [[1, [0], [0], [1, [0]]], [1, [0], [0], [1, [0]]], [1, [0], [0]]]
我想取所有整数并用它们创建一个字符串:
b = '1001010010100'
我有什么方法可以做到这一点? 提前谢谢!
答案 0 :(得分:8)
这是一种反叛的方法:
a = [[1, [0], [0], [1, [0]]], [1, [0], [0], [1, [0]]], [1, [0], [0]]]
b = ''.join(c for c in str(a) if c.isdigit())
答案 1 :(得分:4)
您可以编写一个递归遍历嵌套列表的函数,并尝试将每个元素转换为迭代器。
def recurse_iter(it):
if isinstance(it, basestring):
yield it
else:
try:
for element in iter(it):
for subelement in recurse_iter(element):
yield subelement
except TypeError:
yield it
这个可怕的函数将生成一个对象中的字符串和不可迭代成员的列表。
a = [[1, [0], [0], [1, [0]]], [1, [0], [0], [1, [0]]], [1, [0], [0]]]
list(recurse_iter(a))
# [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0]
将此转换为字符串非常简单。
''.join(map(str, recurse_iter(a)))
答案 2 :(得分:1)
代码 -
def solve(x):
if isinstance(x, int):
return str(x)
return ''.join(solve(y) for y in x)
print(solve(a))
输出 -
1001010010100
答案 3 :(得分:1)
您正在寻找flatten功能:
def flatten_str(x):
if isinstance(x, list):
return "".join(flatten_str(a) for a in x)
else:
return str(x)