暴躁小熊猫 发表于 2023-6-6 23:56:26

请大神指点!!!

>>> S = ["Sun", "Suny", "Today", "Funny", "Happy", "Fantastic"]
>>> even = == 'S']
>>> even
['Sun', 'Suny']
这样是筛选"S"开头的,如果我还要筛选"F"开头的,实现['Sun', 'Suny', "Funny", "Fantastic"]应该怎么写?请指教,谢谢!{:5_111:}

isdkz 发表于 2023-6-6 23:59:49

很好,你想要筛选出以"S"和"F"开头的单词。在Python的列表推导式中,你可以使用逻辑运算符 or 来实现这个需求。以下是修改后的代码:

S = ["Sun", "Suny", "Today", "Funny", "Happy", "Fantastic"]
even = == 'S' or i == 'F']
print(even)


运行这段代码后,你将得到的结果是: ['Sun', 'Suny', 'Funny', 'Fantastic'] 。

在这里, i == 'S' or i == 'F' 是一个逻辑表达式,它会检查每个单词的首字母是否为"S"或者"F"。如果满足其中一个条件,这个单词就会被添加到结果列表中。

暴躁小熊猫 发表于 2023-6-7 00:04:10

isdkz 发表于 2023-6-6 23:59
很好,你想要筛选出以"S"和"F"开头的单词。在Python的列表推导式中,你可以使用逻辑运算符 or 来实现这个需 ...

那为什么我使用and会得到一个空的列表呢
>>> even = == 'S' and i == "F"]
>>> even
[]

isdkz 发表于 2023-6-7 00:05:47

暴躁小熊猫 发表于 2023-6-7 00:04
那为什么我使用and会得到一个空的列表呢
>>> even === 'S' and i == "F"]
>>> even


这是因为 and 逻辑运算符要求两边的条件都满足才能返回 True 。

在你的代码中, i == 'S' and i == 'F' 这个表达式实际上是在要求每个单词的首字母同时等于"S"和"F",这在逻辑上是不可能的,因为一个字母不可能同时等于"S"和"F"。所以,这个表达式对于所有的单词都会返回 False ,导致结果列表为空。

如果你想要筛选出首字母为"S"或"F"的单词,应该使用 or 运算符,因为 or 只要求其中一个条件满足就能返回 True 。这样,只要单词的首字母是"S"或"F",就会被添加到结果列表中。

暴躁小熊猫 发表于 2023-6-7 00:09:05

isdkz 发表于 2023-6-7 00:05
这是因为 and 逻辑运算符要求两边的条件都满足才能返回 True 。

在你的代码中, i == 'S' and i ...

明白了,谢谢{:7_123:}
页: [1]
查看完整版本: 请大神指点!!!