我有一个像这样的二维数组:

list_of_data = [
    ['Joe', 4, 4, 4, 5, 'cabbage', None],
    ['Joe', 43, '2TM', 41, 53, 'cabbage', None],
    ['Joe', 24, 34, 44, 55, 'cabbage', None],
    ['Joe', 54, 37, 42, 85, 'cabbage', None],

    ['Tom', 7, '2TM', 4, 52, 'cabbage', None],
    ['Tom', 4, 24, 43, 52, 'cabbage', None],
    ['Tom', 4, 4, 4, 5, 'cabbage', None],

    ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
    ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
    ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
]


我对第二个索引中包含值'2TM'的行感兴趣。例如:


Joe在数据第二次出现时在索引2处具有值'2TM'
Tom在数据的第1次出现时在索引2处具有值'2TM'


每当值'2TM'出现在数据中时,我都希望删除接下来的两行。上面的示例将变为以下示例:

list_of_data =
    ['Joe', 4, 4, 4, 5, 'cabbage', None],
    ['Joe', 43, '2TM', 41, 53, 'cabbage', None],

    ['Tom', 7, '2TM', 4, 52, 'cabbage', None],

    ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
    ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
    ['Fred', 4, 4, 4, 5, 6, 'cabbage'],
]


我试过像这样使用list.pop

for row[x] in list_of_data:
    if '2TM' in row:
        list_of_data.pop[x+1:x+2]

最佳答案

您需要做这样的事情

list_of_data = [['Joe', 4, 4, 4, 5, 'cabbage', None],
['Joe', 43,'2TM', 41, 53, 'cabbage', None],
['Joe', 24, 34, 44, 55, 'cabbage', None],
['Joe', 54, 37, 42, 85, 'cabbage', None],

['Tom', 7,'2TM', 4, 52, 'cabbage', None],
['Tom', 4, 24, 43, 52, 'cabbage', None],
['Tom', 4, 4, 4, 5, 'cabbage', None],

['Fred', 4, 4, 4, 5, 6, 'cabbage'],
['Fred', 4, 4, 4, 5, 6, 'cabbage'],
['Fred', 4, 4, 4, 5, 6, 'cabbage']]
x=0
for row in list_of_data:
    if '2TM' in row:
        list_of_data.pop(x+1)
        list_of_data.pop(x+1)
    x+=1
print(list_of_data)


您非常接近,但是只是错过了x的增量。

08-28 22:23