如何从列表中删除此元素?

2024-06-02 06:11:46 发布

您现在位置:Python中文网/ 问答频道 /正文

共有9个元素包含饮料的名称。我要做的是删除任何包含“Americano”的元素

但是,我无法调试我的代码,它一直显示一个错误。如何删除list1中包含“Americano”的元素[0,2,3,6]?你知道吗

list1 = [ ['3', 'Americano', '7', '14000'], ['4', 'Smoothie_queen', '4', '12000'], ['5', 'Americano', '2', '4000'], ['6', 'Americano', '17', '34000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'], ['9', 'Americano', '17', '34000'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]

while True:
        if " Americano" in list1[i]:
            del list1[0]
    if i < x:
        i = i + 1
        continue

    if i >= x:
        break

print(list1)

Tags: 代码名称元素ifcafe错误plainqueen
3条回答

使用列表来过滤掉不需要的元素。你知道吗

list1 = [x for x in list1 if 'Americano' not in x]

结果:

>>> list1 = [ ['3', 'Americano', '7', '14000'], ['4', 'Smoothie_queen', '4', '12000'], ['5', 'Americano', '2', '4000'], ['6', 'Americano', '17', '34000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'], ['9', 'Americano', '17', '34000'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]
>>> 
>>> 
>>> list1 = [x for x in list1 if 'Americano' not in x]
>>> list1
[['4', 'Smoothie_queen', '4', '12000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]
>>> 

使用filter函数,这将创建一个新列表并生成结果

list1 = [ ['3', 'Americano', '7', '14000'], ['4', 'Smoothie_queen', '4', '12000'], ['5', 'Americano', '2', '4000'], ['6', 'Americano', '17', '34000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'], ['9', 'Americano', '17', '34000'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]
result =list(filter(lambda x: 'Americano' not in x , list1))
print(result)

输出

[['4', 'Smoothie_queen', '4', '12000'],
 ['6', 'Americano', '17', '34000'],
 ['7', 'Cafe_mocha', '4', '11200'],
 ['8', 'Cafe_latte', '11', '27500'],
 ['10', 'Amorparty', '2', '4000'],
 ['11', 'Plain_yogurt', '13', '45500']]

使用enumeratelist.remove()函数,对现有列表进行修改 相应地不创建新列表

list1 = [ ['3', 'Americano', '7', '14000'], ['4', 'Smoothie_queen', '4', '12000'], ['5', 'Americano', '2', '4000'], ['6', 'Americano', '17', '34000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'], ['9', 'Americano', '17', '34000'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]
for index, value in enumerate(list1):
    if 'Americano' in value:
        list1.remove(value)

print(list1)    

输出

[['4', 'Smoothie_queen', '4', '12000'],
 ['6', 'Americano', '17', '34000'],
 ['7', 'Cafe_mocha', '4', '11200'],
 ['8', 'Cafe_latte', '11', '27500'],
 ['10', 'Amorparty', '2', '4000'],
 ['11', 'Plain_yogurt', '13', '45500']]

如果你不想被混淆,这里是一步一步的代码

list1 = [['3', 'Americano', '7', '14000'], ['4', 'Smoothie_queen', '4', '12000'], ['5', 'Americano', '2', '4000'],
         ['6', 'Americano', '17', '34000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'],
         ['9', 'Americano', '17', '34000'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]
lis = []
for row in list1:
    if 'Americano' not in row:
        lis.append(row)
print lis

输出

[['4', 'Smoothie_queen', '4', '12000'], ['7', 'Cafe_mocha', '4', '11200'], ['8', 'Cafe_latte', '11', '27500'], ['10', 'Amorparty', '2', '4000'], ['11', 'Plain_yogurt', '13', '45500']]

相关问题 更多 >