我想删除python中list中的一个特定列表

2024-04-19 18:35:17 发布

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

我的清单如下。要删除此列表中的特定列表。当用户输入电话号码时,它会与列表进行核对,得到与电话号码列表匹配的特定列表,然后删除该特定列表并显示列表的其余部分。你知道吗

account= [['abc', 8566665891, 's', 5000], ['xyz', 9852560352, 'c', 6000], ['pqr', 6854265891, 's', 7000]]

c_phone = int(input("Enter your phone to Close Account : "))
    for a, b, c, d in account:
        if c_phone == b:
           del account[b]
           print(account)

结果将是:

Enter your phone to Close Account : 9852560352

[['abc', 8566665891, 's', 5000], ['pqr', 6854265891, 's', 7000]]

Tags: to用户列表closeinputyourphone电话号码
3条回答

您可以使用listcomp筛选列表:

account= [['abc', 8566665891, 's', 5000], ['xyz', 9852560352, 'c', 6000], ['pqr', 6854265891, 's', 7000]]

number = 8566665891
account = [i for i in account if i[1] != number]
# [['xyz', 9852560352, 'c', 6000], ['pqr', 6854265891, 's', 7000]]

或者可以使用函数filter()

list(filter(lambda x: x[1] != number, account))

您也可以使用列表的dict而不是列表的list。删除dict中的项目比删除列表中的项目快。你知道吗

account = {j: [i, k, l] for i, j, k, l in account}
account.pop(number) # del account[number]

print(account)
{9852560352: ['xyz', 'c', 6000], 6854265891: ['pqr', 's', 7000]}

可以在遍历列表时使用enumerate,然后使用del account[i]从列表中删除索引为i的元素。你知道吗

account= [['abc', 8566665891, 's', 5000], ['xyz', 9852560352, 'c', 6000], ['pqr', 6854265891, 's', 7000]]

# c_phone = int(input("Enter your phone to Close Account : "))
c_phone = 8566665891
for i, (a, b, c, d) in enumerate(account):
    if c_phone == b:
        del account[i]
        print(account)

用filter重建列表可能更好,但下面是一个实际删除元素的答案:

account= [['abc', 8566665891, 's', 5000], ['xyz', 9852560352, 'c', 6000], ['pqr', 6854265891, 's', 7000]]

c_phone = int(input("Enter your phone to Close Account : "))
for a, b, c, d in account:
    if c_phone == b:
       account.remove([a,b,c,d])
       print(account)

相关问题 更多 >