题目:
已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串
思路:
遍历每一位字符,使用count()函数获取该字符出现的次数,跟字符串长度的一半作比较,使用filter()函数作筛选。
代码展示:
import random
# 生成随机字符串
def randomString():
# 记录随机字符串
rdm_str = ''
# 仅包含‘01’,提高字符重复概率
base_str = '01'
# 定义随机字符串随机长度
length = random.randint(5, 10)
# 从基础字符串中随机获取字符,连接成字符串
for i in range(length):
rdm_str += base_str[random.randint(0, len(base_str) - 1)]
return rdm_str
# 字符串过滤规则
def judge(str):
# 通过count函数得出每个字符的出现次数与len()/2作对比
for c in str:
if 1.0 * str.count(c) > len(str) / 2:
return False
return True
if __name__ == '__main__':
# 构建随机的data
data = []
for i in range(random.randint(10, 20)):
# 随机字符串
data.append(randomString())
print("过滤前共" + str(len(data)) + "个:")
for string in data:
print(string)
# 过滤字符串
tmp = filter(judge, data)
result = list(tmp)
print("过滤后共" + str(len(result)) + "个:")
for string in result:
print(string)