【问题标题】:Remove different string elements移除不同的字符串元素
【发布时间】:2020-05-05 22:35:08
【问题描述】:

我有一个字符串元素列表,我想删除 3 个值,它们是 'English''english''French'

我尝试了以下代码,但操作不起作用:

x = ['English','english','French','Dutch','Spanish','Japenese','Italian',]
list = np.random.choice(x,100)
y = [elem for elem in list if elem !='English' or elem !='english' or elem !='French'] 

我想要的最终结果将是一个没有字符串值'English''english''French' 的列表。

【问题讨论】:

  • ˋorˋ 表示所有条件必须为假,整个条件为假。没有满足此条件的字符串 - 例如“English”将触发第一个条件,但其他两个都接受它。
  • np.random.choice 与问题有什么关系?

标签: python list


【解决方案1】:

你想要and,而不是or

>>> x = ['English', 'english', 'French', 'Dutch', 'Spanish', 'Japenese', 'Italian']
>>> [i for i in x if i != 'English' and i != 'english' and i != 'French']
['Dutch', 'Spanish', 'Japenese', 'Italian']

也就是说,您可以使用not in 更轻松地做到这一点:

>>> [i for i in x if i not in ['English', 'english', 'French']]
['Dutch', 'Spanish', 'Japenese', 'Italian']

【讨论】:

    【解决方案2】:

    这里有一个选项......只是

    def remove(elm,lst):
        idxs = []
        for n,k in enumerate(lst):
            if(k == elm):
                idxs.append(n)
        for n,k in enumerate(idxs):
            del(lst[k-n])
    
    x = ['English','english','French','Dutch','Spanish','Japenese','Italian',]
    for k in ["english","English","French"]:
        remove(k,x)
    print(x) # ['Dutch', 'Spanish', 'Japenese', 'Italian']
    

    【讨论】:

      【解决方案3】:

      给定 elem = 'English'elem !='English' or elem !='english'True,因为虽然 elem !='English' 是 False,elem !='english' 是 True。这就是or 的工作原理。

      【讨论】:

      • 那么,请问您对这种情况有什么解决方案
      猜你喜欢
      • 2015-06-21
      • 2018-12-15
      • 2016-04-19
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多