gpt4 book ai didi

python - 从列表矩阵中删除列表 - Python

转载 作者:行者123 更新时间:2023-12-04 10:33:11 24 4
gpt4 key购买 nike

我创建了带有 ID/里程表/日期的排序矩阵。我真的需要删除 0 值在第二个位置的所有列表。
我准备了一个函数和循环,但不幸的是我仍然低于错误。我怀疑 del [] 方法是否正确使用?

在 zero_clear 中,如果 tablica[i][1] == 0: ****

tablica = [
[
[21091705, 0,'30.06.2019'],
[21091705, 0,'29.06.2019'],
[21091705, 653842,'29.06.2019'],
[21091705, 641701,'28.06.2019'],
[21091705, 642000,'27.06.2019'],
[21091705, 0,'25.06.2019'],
[21091705, 642030,'25.06.2019'],
[21091705, 642030,'25.06.2019'],
[21091705, 637030,'25.06.2019'],
[21091705, 0,'25.06.2019'],
[21091705, 0,'17.05.2019'],
[21091705, 641256,'25.06.2019']
],
[
[21091703, 487000,'30.06.2019'],
[21091703, 461524,'29.06.2019'],
[21091703, 0,'29.06.2019'],
[21091703, 0,'28.06.2019'],
[21091703, 427701,'28.06.2019'],
[21091703, 429000,'27.06.2019']
],
[
[21091701, 421077,'30.06.2019'],
[21091701, 453777,'29.06.2019'],
[21091701, 0,'29.06.2019'],
[21091701, 427701,'28.06.2019'],
[21091701, 433123,'27.06.2019']
],
[
[21091704, 491000,'30.06.2019'],
[21091704, 0,'29.06.2019'],
[21091704, 474542,'29.06.2019'],
[21091704, 427701,'28.06.2019'],
[21091704, 427701,'28.06.2019'],
[21091704, 0,'27.06.2019']
]
]

def zero_clear(tablica):

for i in range(len(tablica)):

if tablica[i][1] == 0:
del tablica[i]

return tablica

for item in tablica:
zero_clear(item)

最佳答案

如果您从 tablica 中删除元素在迭代时列出元素(使用 for 循环),您将结束为删除的每个元素跳转下一个元素,要解决此问题,您可以使用 while循环或创建一个新列表:

1) 使用 while循环

def zero_clear(tablica):
i = 0
while i < len(tablica):
if tablica[i][1] == 0:
del tablica[i]
else:
i += 1

for item in tablica:
zero_clear(item)

2) 创建新列表
def zero_clear(tablica):

new_list = []

for l in tablica:
if l[1] != 0:
new_list.append(l)

return new_list




for item in tablica:
item[:] = zero_clear(item)

或使用列表理解创建新元素:
for item in tablica:
item[:] = [l for l in item if l[1] != 0]

或使用列表理解创建一个全新的列表:
tablica = [[l for l in item if l[1] != 0] for item in tablica]

输出:
[[[21091705, 653842, '29.06.2019'],
[21091705, 641701, '28.06.2019'],
[21091705, 642000, '27.06.2019'],
[21091705, 642030, '25.06.2019'],
[21091705, 642030, '25.06.2019'],
[21091705, 637030, '25.06.2019'],
[21091705, 641256, '25.06.2019']],
[[21091703, 487000, '30.06.2019'],
[21091703, 461524, '29.06.2019'],
[21091703, 427701, '28.06.2019'],
[21091703, 429000, '27.06.2019']],
[[21091701, 421077, '30.06.2019'],
[21091701, 453777, '29.06.2019'],
[21091701, 427701, '28.06.2019'],
[21091701, 433123, '27.06.2019']],
[[21091704, 491000, '30.06.2019'],
[21091704, 474542, '29.06.2019'],
[21091704, 427701, '28.06.2019'],
[21091704, 427701, '28.06.2019']]]

关于python - 从列表矩阵中删除列表 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60318492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com