如果为空,则在子列表中输入值
Entering value in sublist if empty
所以我有一个更大的 for 循环,它生成各种大小的嵌套列表:例如
[[6], [3], [5], [3, 2, 5, 3], [5], [6, 5, 4], [5, 3, 2]]
[[5], [], [], [4], [3]]
[[5], [2]]
[[], [4], [3, 2, 4]
简而言之,我希望每个具有空子列表的数组都只是值 0。就像:
如果生成的列表是:
[[6], [3], [5], [3, 2, 5, 3], [5], [6, 5, 4], [5, 3, 2]]
那我就一直这样。
但是如果生成的列表是:[[5], [], [], [4], [3]]
那么我希望它是:
[[5], [0], [0], [4], [3]]
同样,对于上面的最后一行,我希望它是:[[0], [4], [3, 2, 4]
我一直在尝试以下方法:
for k in range(0,len(TempAisle)):
if TempAisle[k][0] == None:
TempAisle[k][0]= 0
k+=1
但是我收到 list index out of range
错误。
这似乎是一个相当简单的问题,并且看到其他人问过如何检查是否有一个空的子列表,但我无法用另一个值(在我的例子中为 0)替换它。任何帮助和解释将不胜感激。
您可以直接迭代项目 - 更 Pythonic 的方式 - 无需使用 range
。测试每个项目的真实性(空列表是 falsy),仅当子列表为空时才附加零:
for x in TempAisle:
if not x:
x.append(0)
单线解决方案:
x = [elem or [0] for elem in TempAisle]
根据@Moses Koledoye 的评论进行编辑,以避免创建新列表,但将其保留为单行解决方案:
[x.append(0) for x in TempAisle if not x]
所以我有一个更大的 for 循环,它生成各种大小的嵌套列表:例如
[[6], [3], [5], [3, 2, 5, 3], [5], [6, 5, 4], [5, 3, 2]]
[[5], [], [], [4], [3]]
[[5], [2]]
[[], [4], [3, 2, 4]
简而言之,我希望每个具有空子列表的数组都只是值 0。就像:
如果生成的列表是:
[[6], [3], [5], [3, 2, 5, 3], [5], [6, 5, 4], [5, 3, 2]]
那我就一直这样。
但是如果生成的列表是:[[5], [], [], [4], [3]]
那么我希望它是:
[[5], [0], [0], [4], [3]]
同样,对于上面的最后一行,我希望它是:[[0], [4], [3, 2, 4]
我一直在尝试以下方法:
for k in range(0,len(TempAisle)):
if TempAisle[k][0] == None:
TempAisle[k][0]= 0
k+=1
但是我收到 list index out of range
错误。
这似乎是一个相当简单的问题,并且看到其他人问过如何检查是否有一个空的子列表,但我无法用另一个值(在我的例子中为 0)替换它。任何帮助和解释将不胜感激。
您可以直接迭代项目 - 更 Pythonic 的方式 - 无需使用 range
。测试每个项目的真实性(空列表是 falsy),仅当子列表为空时才附加零:
for x in TempAisle:
if not x:
x.append(0)
单线解决方案:
x = [elem or [0] for elem in TempAisle]
根据@Moses Koledoye 的评论进行编辑,以避免创建新列表,但将其保留为单行解决方案:
[x.append(0) for x in TempAisle if not x]