一、 python中any()和all()如何使用
any(iterables)
、all(iterables)
、比较对象时非常实用any()
相当于做 or 运算,而all()
相当于做 and 运算any(iterables)
,可迭代对象中的每一个元素都为True,则返回True。有任意一个或者多个 False则返回False。特例:若可迭代对象为空,比如空列表[],则返回False。any(iterables)
,可迭代对象中的任意一个元素为True,则返回True。所有元素全部是 False则返回False。
示例1:
a = [False,False,False,True]
any(a)
# 只要队列中有一个 true 那any(a)的结果就是true
a = [False,True,True,True]
all(a)
# 只要队列中有一个 False 那all(a)的结果就是False
示例2:
当我们需要筛选一个包含所有各种字符串的可迭代对象时,需要剔除包含某些关键词的内容时。
我现在有这样一个list,其中包含了180个字符串。我现在需要删除 \n 和 by 和(about) 的值。
- 首先我们需要用for循环遍历这个list
- 再把遍历出来的结果做对比判断
- 排除不要的内容,
- 打印需要的内容。
unneed = ["\n", "by", "(about)"]
# 遍历text
for i in text:
# 将 i 和 unneed 中的元素逐一做判断。如果都不存在,那么打印i
if not any(un in i for un in unneed):
print(i)
示例3:
test = [1,2,3,4,5,45]
any(i > 4 for i in test) # 如果test中任意一个值大于4 则返回true
all(x != 0 for i in test) # 如果test中所有值都不等于0 则返回true
二、 删除字符串特定内容的方法removeprefix、removesuffix、replace
test = ['张三你好', '你好李四', '哦你好呀']
for i in test:
newstr1 = i.removeprefix('你好') # 移除字符串开头的 你好
newstr2 = i.removesuffix('你好') # 移除字符串结尾的 你好
newstr3 = i.replace('你好', '') # 替换字符串中的所有内容
print(newstr1, ' | ', newstr2, ' | ', newstr3)
输出结果:
张三你好 | 张三 | 张三
李四 | 你好李四 | 李四
哦你好呀 | 哦你好呀 | 哦呀
三、 列表去重dict.fromkeys
我们知道可以转换为集合去重。但是输出结果是乱序的。所以:
test= [1, 1, 2, 2, 3, 3]
newtest= dict.fromkeys(test) # 利用字典的key特性去重
print(list(newtest))
输出结果:
[1, 2, 3]