有没有办法在Python中使用两个if条件的列表推导式?

29 浏览
0 Comments

有没有办法在Python中使用两个if条件的列表推导式?

假设我有一个列表\n

my_list = ['91 9925479326','18002561245','All the best','good']

\n现在我想忽略列表中以9118开头的字符串,如下所示\n

result = []
for i in my_list:
   if not '91' in i:
      if not '18' in i:
         result.append(i) 

\n所以我想用列表推导实现这个功能。\n是否有办法在列表推导中编写两个if条件?

0
0 Comments

使用两个if条件的列表推导式在Python中是可能的。下面是一种解决方法,可以将两个条件合并:

if ((not '91' in i) and (not '18' in i))

或者可以使用德摩根定律进行简化:`if not ('91' in i or '18' in i)

0
0 Comments

在Python中的列表推导式中使用两个if条件的方法是通过在列表推导式中使用if语句来过滤列表元素。这种情况出现的原因是,当我们需要从一个列表中选择特定的元素时,我们可以使用if语句来过滤出符合条件的元素。

解决这个问题的方法是使用if语句来过滤列表元素。根据具体的需求,可以使用不同的if语句来实现不同的过滤条件。例如,如果需要过滤出不以特定字符串开头的元素,可以使用not i.startswith(x);如果需要检查特定字符串是否在元素中(不仅仅是在开头),可以使用in关键字来代替startswith方法。

以下是一个使用两个if条件的列表推导式的示例:

my_list = ['91 9925479326','18002561245','All the best','good']
filtered_list = [i for i in my_list if all(not i.startswith(x) for x in ['91', '18'])]

在上面的示例中,我们使用了两个if条件来过滤出不以'91'和'18'开头的元素。最后,我们得到了过滤后的列表['All the best', 'good']

除了使用startswith方法和in关键字来实现条件过滤外,还可以使用any函数和startswith方法的tuple参数来简化列表推导式的写法。例如,可以使用not any(i.startswith(x) for x in ['91', '18'])来代替all(not i.startswith(x) for x in ['91', '18'])

总结起来,通过在列表推导式中使用if语句,我们可以根据特定的条件来过滤列表元素。根据具体的需求,我们可以使用不同的if语句来实现不同的过滤条件。这种方法提供了一种简洁而灵活的方式来选择和过滤列表中的元素。

0
0 Comments

问如何在Python的列表推导式中使用两个if条件。原因是列表中的元素是电话号码,需要忽略以91和18开头的字符串。下面是一个示例代码和一些评论:

[i for i in my_list if '91' not in i and '18' not in i]

需要注意的是,不要将变量名命名为`list`,因为它会覆盖内置函数。另外,将`not '91' in i`改为`'91' not in i`更为准确。如果需要检查五个或十个值而不是两个,这个答案将变得复杂和冗长。

问是否可以使用`startswith`函数来完成相同的任务,因为列表中的字符串有时以91开头,有时以18开头,无论是哪个开头的字符串都应该被忽略。也有人指出这个解决方案是不正确的,应该使用`startswith`而不是`in`来检查值。

最后,提问者明确表示想要忽略以91和18开头的字符串。

0