-
2021-03-28 22:21:25
题目:
已知列表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)
更多相关内容 -
已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串
2020-10-13 11:16:06已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串 思路:利用collections库中的Counter方法,遍历data列表中的每一个字符串,并把他们存入进一个字符出现...已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串
思路:利用collections库中的Counter方法,遍历data列表中的每一个字符串,并把他们存入进一个字符出现次数列表定义一个最大值max存放每一个字符串中出现次数最多的字符,将max与该字符串的长度比较,如果小于它的一半则保留否则就从data列表中删除这个字符串
from collections import Counter # 1、创建一个包含若干字符串的列表 data = ["www.com", "www.cn", "@www", "@qq.com"] # 根据题意预判结果:只想输出第1, 2, 4个, 第3个w字符的长度为3超过一半 # 2、遍历列表 for d in data: # 2.1存放字符串中每个字符出现次数的字典 res = Counter(d) # 2.2遍历字典, 找出字符出现次数最多的那个字符出现的次数 max_len = 0 for key in res: # print(key, res[key]) if max_len < res[key]: max_len = res[key] # print(max_len) # 2.3将获得的max_len与字符串的长度比较,删除max_len>字符串长度的一半 n = len(d) # 统计每个字符串的长度 if max_len > n / 2: data.remove(d) print(data)
运行结果
-
Python如何用filter函数筛选数据
2020-09-17 18:50:26主要介绍了Python如何用filter函数筛选数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
python
2021-03-27 22:18:33已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串。 提示:以下是本篇文章正文内容,下面案例可供参考 一、分析 键盘输入字符串后需要使用split()来进行...***python习题##***
问题
已知列表data中有若干字符串,要求编写程序,对data中的字符串进行过滤,只输出重复字符不超过一半的字符串。
提示:以下是本篇文章正文内容,下面案例可供参考
一、分析
- 键盘输入字符串后需要使用split()来进行分割操作
- 需要引入collections中的Counter来方便计数
- 通过for循环来对字符串计数
- 通过if语句找出每个字符串中字母重复最多的
- 字母重复最多的那个字母重复的个数与该字符串长度进行比较决定要不要输出该字符串
二、步骤
1.引入库中方法
代码如下(示例):
from collections import Counter #导入Counter
2.键盘输入数据
代码如下(示例):
print("输入字符串") data=input() #手动输入 datalist=data.split(",") #分割字符串 data=datalist print(data) #输出字符串列表
代码
from collections import Counter #导入Counter print("输入字符串") data=input() #手动输入 datalist=data.split(",") #分割字符串 #print(datalist) data=datalist #data=['Hello','World','python','aaabbb','cccdd'] print(data) #输出字符串列表 for i in data: #for循环 a=Counter(i) #对列表中每一个字符串进行计数 #print(Counter(i)) maxlen=0 for j in a: #print(key,a[j]) #输出的是字母和个数,例如 "all" 输出 a 1 l 2 if maxlen< a[j]: maxlen= a[j] #得到字符串中字母重复最多的 #print(maxlen) #输出重复数量 if maxlen <= len(i)/2: #重复最多的字母的重复个数与该字符长度比较,没有超过一半则输出该字符串 print(i)
-
有一个字符串,内有若干字符,现输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。
2020-03-16 18:40:31方法一:用两个数组实现 file1.c(文件1): #include<stdio.h> int main() { extern void enter_string(char str1[]); extern void delete_string(char str1[],char str2[],char ch);... extern void print_...方法一:用两个数组实现
file1.c(文件1):
#include<stdio.h> int main() { extern void enter_string(char str1[]); extern void delete_string(char str1[], char str2[], char ch); extern void print_string(char str2[]); char c, str1[80], str2[80]; enter_string(str1); scanf("%c", &c); delete_string(str1, str2, c); print_string(str2); return 0; }
file2.c(文件2):
#include<stdio.h> void enter_string(char str1[80] ) { gets(str1); }
file3.c(文件3):
void delete_string(char str1[], char str2[], char ch) { int i, j; for (i = j = 0; str1[i] != '\0'; i++) { if (str1[i] != ch) { str2[j++] = str1[i]; } } str2[j] = '\0'; }
file4.c(文件4):
#include<stdio.h> void print_string(char str2[]) { printf("%s\n", str2); }
在VS2019下,需将源文件的gets和scanf做些修改:
file1.c(文件1):
#include<stdio.h> int main() { extern void enter_string(char str1[]); extern void delete_string(char str1[], char str2[], char ch); extern void print_string(char str2[]); char c, str1[80], str2[80]; enter_string(str1); scanf_s("%c", &c, (unsigned int)sizeof(char)); delete_string(str1, str2, c); print_string(str2); return 0; }
file2.c(文件2):
#include<stdio.h> void enter_string(char str1[80] ) { gets_s(str1,80); }
file3.c(文件3):
void delete_string(char str1[], char str2[], char ch) { int i, j; for (i = j = 0; str1[i] != '\0'; i++) { if (str1[i] != ch) { str2[j++] = str1[i]; } } str2[j] = '\0'; }
file4.c(文件4):
#include<stdio.h> void print_string(char str2[]) { printf("%s\n", str2); }
方法二:用一个数组实现
file1.c(文件1):
#include<stdio.h> int main() { extern void enter_string(char str[]); extern void delete_string(char str[], char ch); extern void print_string(char str[]); char c, str[80]; enter_string(str); scanf("%c", &c); delete_string(str, c); print_string(str); return 0; }
file2.c(文件2):
#include<stdio.h> void enter_string(char str[80]) { gets(str); }
file3.c(文件3):
void delete_string(char str[], char ch) { int i, j; for (i = j = 0; str[i] != '\0'; i++) { if (str[i] != ch) { str[j++] = str[i]; } } str[j] = '\0'; }
file4.c(文件4):
#include<stdio.h> void print_string(char str[]) { printf("%s\n", str); }
在VS2019下,需将源文件的gets和scanf做些修改:
file1.c(文件1):
#include<stdio.h> int main() { extern void enter_string(char str[]); extern void delete_string(char str[], char ch); extern void print_string(char str[]); char c, str[80]; enter_string(str); scanf_s("%c", &c, (unsigned int)sizeof(char)); delete_string(str, c); print_string(str); return 0; }
file2.c(文件2):
#include<stdio.h> void enter_string(char str[80]) { gets_s(str,80); }
file3.c(文件3):
void delete_string(char str[], char ch) { int i, j; for (i = j = 0; str[i] != '\0'; i++) { if (str[i] != ch) { str[j++] = str[i]; } } str[j] = '\0'; }
file4.c(文件4):
#include<stdio.h> void print_string(char str[]) { printf("%s\n", str); }
-
actskn43.ocx
2008-11-21 14:07:54actskn43.ocx 解压开后运行bat文件就可以注册服务了! -
去除字符串中的重复字符(C语言)
2019-01-19 15:01:40=EOF) //ctrl+d的值是EOF,所以用它判断字符输入结束 12 { 13 a[i]=ch; 14 i++; 15 } 16 for(k=0;k;k++) 17 { 18 int flag=0; 19 for(j=k-1;j>=0;j--) //遍历数组 20 { 21 if(a[j]=... -
Python基础-----filter函数
2020-12-08 04:22:01/usr/bin/env python# -*- coding:utf-8 -*-'''filter过滤器'''# 若有一个需求用于实现:过滤掉一个列表中含有指定字符串的元素'''1、普通函数people_list = ['a','b_sb','c','d_sb']#定义功能函数用于判断列表元素... -
已知文本文件中存放了若干数字,编写程序读取所有的数字,排序后进行输出
2020-01-01 14:50:07file = open("test.txt","r") content = file.read() conlist=list(content) conlist.sort()#.sort()直接排序,本身是没有返回值的,print(xx....print("".join(conlist))# join() 方法可以将列表链接为字符串 ... -
python编写程序,给定一个字符串,输出每个字母出现的次数
2020-12-14 09:23:54给定字符串,输出每个字母出现的次数 def count_char(string): dict = {} for i in string: if i not in dict: dict[i]=1 else: dict[i]+=1 return dict print(count_char('skdaskerkjsalkj')) -
接受字符串参数,返回一个元组,并分别统计字符串中大小写的个数
2019-07-11 11:31:51编写一个函数, 接收字符串参数, 返回一个元组,‘ehllo WROLD’ 元组的第一个值为大写字母的个数, 第二个值为小写字母个数. 代码块: def fun(x): upper_count = 0 lower_count = 0 for i in x: if i.isupper():... -
C++ 字符串库函数的自定义实现
2021-02-06 21:13:41字符串处理函数包括几大类可以满足对char*字符串大部分操作,需要包括头文件<cstring>或者<string.h>,选择几个仔细研究一下: #include <iostream> #include <cstring> #include <... -
调用printf()函数输出字符串,则需要使用格式控制符()。
2021-05-20 07:46:14错误【单选题】在c语言中,输出一个整型变量用的下面哪一种格式控制符A.%cB.%dC.%f【单选题】以下各项,不属于printf()函数的格式控制符的是_______。A.%cB.%dC.%fD.%m【单选题】使用下列哪个格式控制符可设置转换十六... -
Python对字符串的读出、处理及写入
2020-12-08 23:14:02案例介绍:假设文件 data.txt 中有若干整数,所有整数之间使用英文逗号分隔,编写程序读取所有整数,将按升序排序后再写入文本文件 data_asc.txt 中。步骤1:创建一个文件data.txt,里面写入如下数据,为了增加难度,某些行... -
MFC Widnows程序设计 part 0
2007-09-30 16:33:19MFC Widnows程序设计(0)Code&index -
python读取txt文件中字符串,字符串用空格分隔
2019-02-13 16:10:39python3.6 代码如下: with open('C:\\Users\\***\\Desktop\\test.txt') as f: ... print(a[5])#这一行可以单独打印第几个字符串 f.closed 比如test.txt文件里只有一行: 1 123 1.1 a abc p+=... -
python练习之编程小练习
2021-10-25 23:06:41已知列表data中有若干字符串,要求编写程序,对data中字符串进行过滤,输出重复字不超过一半的字符串。 from collections import Counter data = list(input("请输入字符串:").split(',')) # data = ['hello','... -
字符串
2021-11-09 21:39:28由若干个字符组成的一个序列被称为字符串,其中的字符可以是字母,数字,符号,中文等 注意:字符串属于不可变的数据类型,可以作为字典的key 1.创建 2.操作 3.系统功能 3.1转换 eval():将str转换为有效的... -
python实验报告02 序列结构用法 ~附带注释
2021-10-29 11:39:131.编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个数降序排列,并输出结果。 下面展示一些 内联代码片。 import random data = [random.randrange(100) for i in range(20)] print('操作前... -
假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1...
2019-09-26 14:49:44假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data segment arry1 dw 223,4037... -
汇编语言及应用——程序设计
2022-01-19 21:54:36已知当前数据段中DADT1和DADT2开始分别存放若干字节数据,数据个数相同,编制程序检查两数据块中数据是否相同,若相同,则在屏幕上显示1,否则显示0。 【参考程序如下】 DSEG SEGMENT DATA1 DB 'ABCDEFG3' DATA2 DB -
读取文件数字并排序最后输出另一个文件
2018-12-16 17:53:01读取一个文件中的整数,并将它们从小到大排序,最后输出排序后到另一个文件中 -
Python练习题
2020-11-29 13:48:23编写程序,输入一个自然数字符串,然后输出各位数字之和。a=input("输入一串数字:")b=0for i in a:b=b+eval(i)print("数字之和为:{}".format(b))T2.输入一个字符串,输出反转后的字符串。a=input("输入一个字符串... -
python3 读取文件中的多行整数,每行有若干整数用空格隔开
2020-04-03 14:32:53python3本身没有直接读取int的接口,只能读取字符串,因此需要自己编写代码。 读取的文件如下形式: 1 2 3 1 4 5 6 7 1 8 9 10 11 6 12 13 14 15 16 1 3 7 17 18 11 6 19 20 21 22 23 24 1 25 3 26 3 11 27 6 3 28 7... -
微机原理第四章余春暄答案【微机原理作业与答案第四章】
2020-12-23 11:48:49第四章 汇编语言程序设计4-2 下列程序执行后,寄存器AX ,BX ,CX 的内容分别是多少?ORG 0202HDA_WORD DW 20HMOV AX,DA_WORD ;(AX)=0020HMOV BX,OFFSET DA_WORD ;(BX)=0202H (BX)=0,这是书中的参考答案MOV CL,BYTE ... -
2020-09-25:Python题目和总结
2020-09-25 12:33:41实验6:字符串结构程序设计(4学时) 实验7:函数程序设计(4学时) 实验8:类程序设计(2学时) 实验9:文件操作程序设计(2学时) 实验10:GUI 自主学习1:爬取百度图片 自主学习2:利用pandas分析数据 自主学习3:数据库... -
苏州大学计算机复试上机【字符串/数组类】【PAT和LeetCode习题】
2020-05-25 16:12:00目录苏州大学计算机复试【字符串/数组类习题】PAT1028 人口普查 (20分)1029 旧键盘 (20分)1078 字符串压缩与解压 (20分)1081 检查密码 (15分)1043 输出PATest (20分)1091 N-自守数 (15分)LeetCode3. 无重复字符的... -
程序设计技术(C语言)-中国大学mooc-题库零氪
2021-05-21 01:16:20A、有穷性B、有效性C、可行性D、有一个或多个输出2、N-S图与传统流程图比较,主要优点是( )A、杜绝了程序的无条件转移B、具有顺序、选择和循环三种基本结构C、简单、直接D、有利于编写程序3、以下( )是面向过程的... -
Solidity 安全:已知攻击方法和常见防御模式综合列表
2019-05-12 09:12:07在这个例子中,我们假设一些其他用户已经将若干 Ehter 存入这份合约中,比方说它的当前余额就是 10 ether 。然后会发生以下情况: Attack.sol -Line [15] -EtherStore合约的 despoitFunds 函数将会被调用...