📌  相关文章
📜  Python|从包含特定数字的给定列表中删除元素

📅  最后修改于: 2022-05-13 01:55:45.091000             🧑  作者: Mango

Python|从包含特定数字的给定列表中删除元素

给定一个列表,任务是从包含特定数字的列表中删除所有这些元素。

例子:

Input: lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
       no_delete = ['2', '3', '4', '0']
Output: [1, 5, 6, 7, 8, 9, 11, 15, 16]
Explanation:
Numbers 2, 3, 4, 10, 12, 13, 14 contains digits 
from no_delete, therefore remove them.

Input: lst = [1, 2, 3, 4, 5, 6, 7, 8, 13, 15, 16]
       no_delete = {'6', '5', '4', '3'}
Output: [1, 2, 7, 8, 9, 10, 11, 12]
Explanation:
Numbers 3, 4, 5, 6, 13, 14, 15, 16 contains digits 
from no_delete, therefore remove them.


以下是一些完成任务的方法。

方法#1:使用迭代

# Python code to remove all those elements 
# from list which contains certain digits
  
# Input List Initialisation
Input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
  
# Numbers to delete
no_delete = [1, 0]
  
# Output List Initialisation
Output = []
  
# Using iteration to remove all the elements 
for elem in Input:
    flag = 1
    temp = elem
    while elem > 0:
        rem = elem % 10
        elem = elem//10
        if rem in no_delete:
            flag = 0
    if flag == 1:
        Output.append(temp)
  
# Printing Output 
print("Initial list is :", Input)
print("Delete list :", no_delete)
print("List after removing elements is :", Output)
输出:
Initial list is : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
Delete list : [1, 0]
List after removing elements is : [2, 3, 4, 5, 6, 7, 8, 9]


方法 #2:使用列表推导和 any()函数

# Python code to remove all those elements from list 
# which contains certain digits
  
# Input List Initialisation
Input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
  
# Numbers to delete
no_delete = ['2', '3', '4', '0']
  
# using list comprehension and any()
Output = [a for a in Input if not 
          any(b in no_delete for b in str(a))]
  
# Printing Output 
print("Initial list is :", Input)
print("Delete list :", no_delete)
print("List after removing elements is :", Output)
输出:
Initial list is : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
Delete list : ['2', '3', '4', '0']
List after removing elements is : [1, 5, 6, 7, 8, 9, 11, 15, 16]


方法#3:使用列表推导和 set()

# Python code to remove all those elements from list 
# which contains certain digits
  
# Input List Initialisation
Input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
  
# Numbers to delete
no_delete = {'6', '5', '4', '3'}
  
# Using list comprehension and set
Output = [x for x in Input
         if not no_delete & set(str(x))]
  
# Printing Output 
print("Initial list is :", Input)
print("Delete list :", no_delete)
print("List after removing elements is :", Output)
输出:
Initial list is : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15, 16]
Delete list : {'3', '4', '6', '5'}
List after removing elements is : [1, 2, 7, 8, 9, 10, 11, 12]