{}
表示,元素间用逗号分隔set()
set()
#使用{}建立集合,无序,不同
A = {'python',123,('python',123)} #使用{}建立集合
print(A)
B = set('pypy123') #使用{}建立集合
print(B)
{('python', 123), 123, 'python'}
{'2', 'y', 'p', '1', '3'}
#集合间操作
A={'p','y',123}
B=set('pypy123')
print(A-B,B-A,A&B,A|B,A^B)
{123} {'1', '3', '2'} {'p', 'y'} {'2', 'y', 'p', '3', '1', 123} {'2', 123, '1', '3'}
#集合处理方法
A = {'p','y',123}
for i in A:
print(i,end=' ')
123 y p
try:
A = {'p','y',123}
while True:
print(A.pop(),end=' ')
except:
pass
123 y p
'p' in {'p','y',123}
True
{'p','y'}>={'p','y',123}
False
#数据去重
ls=['p','p','y','y',123]
s=set(ls)
ls=list(s)
print(s,ls)
{123, 'y', 'p'} [123, 'y', 'p']
x in s
:x是序列s的元素,返回True,否则返回Falsex not in s
:如果x是序列s的元素,返回False,否则返回Trues+t
:连接两个序列s和ts*n或n*s
:将序列s复制n次s[i]
:索引,返回s中的第i个元素,i是序号s[i:j]或s[i:j:k]
:切片,返回序列s中第i到j以k为步长的元素子序列#取反
ls=['python',123,'.io']
s='pythom123.o'
print(ls[::-1],s[::-1])
['.io', 123, 'python'] o.321mohtyp
len(s)
:返回序列s的长度min(s)
:返回序列s最小元素,s中元素需要可比较max(s)
:返回序列s最大元素,s中元素需要可比较s.index(x)或s.index(x,i,j)
:返回序列s从i开始到j位置中第一次出现元素x的位置s.count(x)
:返回序列出现x的总次数ls=['python',123,'.io']
s='pythom123.o'
print(len(ls),max(s))
3 y
#元组的使用
creature = 'cat','dog','tiger','human'
color=(0x001100,'blue',creature)
print(creature,color,creature[::-1],color[-1][2])
('cat', 'dog', 'tiger', 'human') (4352, 'blue', ('cat', 'dog', 'tiger', 'human')) ('human', 'tiger', 'dog', 'cat') tiger
,
分隔#列表
ls=['cat', 'dog','tiger',1024]
lt=ls
lt
['cat', 'dog', 'tiger', 1024]
ls[i]=x
:替换列表ls第i元素为xls[i:j:k]=lt
:用列表lt替换切片后所对应元素子列表del ls[i]
:删除列表ls中第i元素del ls[i:j:k]
:删除列表ls中第i到第j以k为步长的元素ls+=lt
:更新列表ls,将lt元素增加到列表ls中ls*=n
:更新列表s,其元素重复n次#列表类型操作
ls=['cat', 'dog','tiger',1024]
ls[1:2]=[1,2,3,4]
print(ls)
del ls[::3]
print(ls)
ls*2
['cat', 1, 2, 3, 4, 'tiger', 1024]
[1, 2, 4, 'tiger']
[1, 2, 4, 'tiger', 1, 2, 4, 'tiger']
ls.append(x)
:在ls最后增加一个元素xls.clear()
:删除列表ls中所有元素ls.copy()
:生成一个新列表,赋值ls中所有元素ls.insert(i,x)
:在列表ls第i位置增加元素xls.pop(i)
:将列表ls中第i位置元素取出并删除该元素ls.remove(x)
:将列表ls中出现的第一个元素x删除ls.reverse()
:将列表ls中的元素反转#列表类型操作
ls=['cat', 'dog','tiger',1024]
ls.append(1234)
print(ls)
ls.insert(3,'human')
print(ls)
ls.reverse()
print(ls)
['cat', 'dog', 'tiger', 1024, 1234]
['cat', 'dog', 'tiger', 'human', 1024, 1234]
[1234, 1024, 'human', 'tiger', 'dog', 'cat']
#CalStatisticsV1
def getNum():
nums=[]
iNumStr=input('请输入数字(回车结束):')
while iNumStr != '':
nums.append(eval(iNumStr))
iNumStr=input('请输入数字(回车结束):')
return nums
#计算平均值
def mean(numbers):
s=0.0
for num in numbers:
s+=num
return s/len(numbers)
#计算方差
def dev(numbers,mean):
sdev=0.0
for num in numbers:
sdev += (num-mean)**2
return pow(sdev/(len(numbers)-1),0.5)
#计算中位数
def median(numbers):
sorted(numbers)
size=len(numbers)
if size % 2 == 0:
med = (numbers[size//2-1]+numbers[size//2])/2
else:
med = numbers[size//2]
return med
#主函数
n = getNum()
print('源数据:{}\n平均值:{},方差:{:.2},中位数:{}'.format(n,mean(n),dev(n,mean(n)),median(n)))
源数据:[1, 2, 3, 4, 5, 67, 7, 8, 9]
平均值:11.777777777777779,方差:2.1e+01,中位数:5
{<键1>:<值1>,<键2>:<值2>,...,<键n>:<值n>}
<字典变量>={<键1>:<值1>,...,<键n>:<值n>}
<值>=<字典变量>[<键>]
<字典变量>[<键>]=<值>
#字典例子
d = {'中国':'北京','美国':'华盛顿','法国':'巴黎'}
print(d['中国'])
de={}#生成空字典
type(de)#返回de类型
北京
dict
del d[k]
:删除字典d中k对应数据值k in d
:判断键k是否在字典d中,如果在返回True,否则返回Falsed.keys()
:返回字典d中所有的键信息d.values()
:返回字典d中值的信息d.items()
:返回字典中所有键值对的信息d.get(k,)
:键k存在,则返回相应值,不存在则返回d.pop(k.)
:键k存在,则取出相应值,不存在则返回d.popitem()
:随机从字典d中取出一个键值对,以元组形式返回d.clear()
:删除所有键值对len(d)
:返回字典d中元素个数#类型操作
d = {'中国':'北京','美国':'华盛顿','法国':'巴黎'}
'中国'in d
print(d.keys(),d.values(),d.get('中国','伊斯兰堡'),d.get('巴基斯坦','伊斯兰堡'),d.popitem())
dict_keys(['中国', '美国']) dict_values(['北京', '华盛顿']) 北京 伊斯兰堡 ('法国', '巴黎')
d={} #定义空字典d
d['a']=1;d['b']=2 #向d中新增两个键值对
d['b']=2 #修改赋值时的第二个元素
'c' in d #判断c是否在d中
len(d) #d的长度
d.clear() #清空d
jieba.lcut(s)
:精确模式,返回一个列表类型的分词结果jieba.lcut(s,cut_all=True)
:全模式,返回一个列表类型的分词结果jieba.lcut_for_search(s)
:搜索引擎模式,返回一个列表类型的分分词结果jieba.add_word(w)
:向分词词典种添加新词#jieba库的函数
import jieba
s='中国是一个伟大的国家'
print(jieba.lcut(s),'\n',jieba.lcut(s,cut_all=True),'\n',jieba.lcut_for_search(s),'\n',jieba.add_word('python'))
['中国', '是', '一个', '伟大', '的', '国家']
['中国', '国是', '一个', '伟大', '的', '国家']
['中国', '是', '一个', '伟大', '的', '国家']
None
需求,分析文章出现哪些次,哪些词出现的最多(中文和英文)
英文:Hamlet
中文:三国演义
英文:噪音处理,归一化,提取单一单词作为第一步骤
#CalHamletV
#归一化文本
def getText():
txt = open('Hamlet.txt','r').read()
txt = txt.lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
txt = txt.replace(ch,' ') #将文本中字符替换为空格
return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:
counts[word] = counts.get(word,0)+1
items = list(counts.items())
items.sort(key = lambda x:x[1],reverse = True)
for i in range(10):
word,count = items[i]
print('{0:<10}{1:>5}'.format(word,count))
the 1138
and 965
to 754
of 669
you 550
i 542
a 542
my 514
hamlet 462
in 436
#CalThreeKingdomsV1
import jieba as j
txt = open('三国演义.txt','r',encoding='utf-8').read()
words = j.lcut(txt)
counts={}
for word in words:
if len(word) == 1:
continue
else:
counts[word] = counts.get(word,0)+1
items = list(counts.items())
items.sort(key = lambda x:x[1],reverse = True)
for i in range(15):
word,count=items[i]
print('{0:<10}{1:>5}'.format(word,count))
曹操 953
孔明 836
将军 772
却说 656
玄德 585
关公 510
丞相 491
二人 469
不可 440
荆州 425
玄德曰 390
孔明曰 390
不能 384
如此 378
张飞 358
#CalThreeKingdoms
import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此","军马","军士","左右"}
txt = open("三国演义.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == "诸葛亮" or word == "孔明曰":
rword = "孔明"
elif word == "关公" or word == "云长":
rword = "关羽"
elif word == "玄德" or word == "玄德曰":
rword = "刘备"
elif word == "孟德" or word == "丞相":
rword = "曹操"
else:
rword = word
counts[rword] = counts.get(rword,0) + 1
for word in excludes:
del counts[word]
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
word, count = items[i]
print ("{0:<10}{1:>5}".format(word, count))
曹操 1451
孔明 1383
刘备 1252
关羽 784
张飞 358
商议 344
如何 338
主公 331
吕布 300
赵云 278
d= {'a': 1, 'b': 2, 'b': '3'}
print(d['b'])
3
描述
获得用户输入的一个整数N,输出N中所出现不同数字的和。
例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6。
#数字不同数之和
s = input()
s = set(s)
sum=0
for i in s:
sum += int(i)
print(sum)
6
描述
编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名。
输入输出示例
这里是个示例,展示输出格式,不是结果。
#输出字符串最多的值
s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖
杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙
金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍
鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰
阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰
乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王
忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正
李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复
逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣
洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复
黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄
张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫
洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈
完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱
郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲
谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉
双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏
逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
ls=s.split()
counts={}
for i in ls:
counts[i]=counts.get(i,0)+1
max_name,max_cnt='',0
for name in counts:
if counts[name]>max_cnt:
max_name,max_cnt = i,counts[i]
print(max_name)
赵敏
s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖
杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙
金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍
鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰
阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰
乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王
忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正
李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复
逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣
洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复
黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄
张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫
洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈
完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱
郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲
谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉
双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏
逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
ls = s.split()
d = {}
for i in ls:
d[i] = d.get(i, 0) + 1
max_name, max_cnt = "", 0
for k in d:
if d[k] > max_cnt:
max_name, max_cnt = k, d[k]
print(max_name)
赵敏