【发布时间】:2022-01-11 22:40:00
【问题描述】:
我有这段代码可以创建一个大小为 3 的列表。问题是其中一些列表的大小是 1 并且以这种方式嵌套:
[[['b']]]
并且在另一个列表中找到。无论如何,是否仅展平列表列表的一部分以从嵌套中删除这些大小为 1 的列表(无论它们如何嵌套),但将它们保持为列表?这里有两个例子:
d = [[['a']], 'to', ['b']]
会变成:
d = [['a'], 'to', ['b']]
和
d1 = [[['c']], 'from', [['a'], 'to', [['b']]]]
会变成:
d1 = [['c'], 'from', [['a'], 'to', ['b']]]
我尝试使用 isinstance 并查看列表是否嵌套,然后替换该索引处的值,但这并没有成功。相反,我的代码一直在替换所有值并展平列表,这不是我的意图。我只希望将大小为 1 的嵌套列表减少为单个列表。这是我的尝试:
for index, value in enumerate(d1):
if isinstance(value, list) and len(value) == 1:
d1[index] = d1[index][0]
【问题讨论】:
-
你认为
isinstance([], value)是做什么的?试试isinstance(value, list) -
@Mark 不平衡括号已修复,这是我的错误。
-
“它不起作用”不是有效的问题陈述。您很好地列出了预期结果,但没有列出构成“不工作”的实际行为
-
@learningtoprogram123。你误解了帖子。
isinstance([], list)始终为真。list是类型或类。[]是您要测试的对象的示例。不用担心,这就是你学习的方式。 -
现在您已经享有盛誉,通常会为好的答案投票(不仅仅是针对您自己的问题)。