Python学习(一)
来源:互联网 发布:医学搜题软件 编辑:程序博客网 时间:2024/05/09 18:31
参考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
一、基础
1、数据类型
整型、浮点型、字符串、布尔值、空值、变量、常量。
Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648
-2147483647
。
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)。
2、字符串和编码
为什么字母占一个字节,而一个汉字确占两个字节?
中国字比较多,1字节=8位,8位从0000 0000到1111 1111只能表示256个字符,2个字节是2*8=16位,从0000 0000 0000 0000到1111 1111 1111 1111可以表示65535个字符。6万多个足以表示我们经常用的那些字了。所以我们用2字节表示汉字。
操作字符串常用函数:
len(xxx):计算xxx的字符长度;
split():按列表输出字符串中的单词(可用字典diclk统计字母出现的次数)
def vcDic(s):return {x : x.count('a') + x.count('e') + x.count('i') + x.count('o') + x.count('u') for x in s.split()}a = "many of you failed to insert your hawid"print (vcDic(a))格式化:
在Python中,采用的格式化方式和C语言是一致的,用%
实现,举例如下:
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'
3、列表list、元组tuple、字典dict
list:list是一个是一个可变的有序表,是Python内置的一种数据类型,可以随时添加(append)、删除(pop()通过下标删除)、替换(replace)其中的元素。
tuple:tuple一旦初始化便不能修改,在定义时,tuple的元素就被确定了。
dick:Python内置了字典,使用key-value存储,具有极快的查找速度。和list相比,查找速度要高很多。为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字,无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
Dict和List的区别:Dict的查找速度和插入速度都是极快的,不会随着key的增加而增加;但dict要占用大量的内存,内存浪费多。
Dict是不可变对象,因为使用key来计算value的存储位置,为了保证结果的正确性,作为key的对象不能变,可使用字符串、整数等不可变的对象作为dict中的key。
Set:set和dict类似,也是一组key的集合,但是不同的是在set中没有重复的key。
4、函数
sorted:python排序的内置函数。
对数字(默认升序)进行排序:
>>> sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]
此外,sorted()
函数也是一个高阶函数,它还可以接收一个key
函数来实现自定义的排序,例如按绝对值大小排序:
>>> sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]
对字符串进行排序,是按照ASCII的大小比较的,由于'Z' < 'a'
,结果,大写字母Z
会排在小写字母a
的前面。
>>> sorted(['bob', 'about', 'Zoo', 'Credit'])['Credit', 'Zoo', 'about', 'bob']
简单练习:
def by_name(t):return t[0]def by_score(t):return t[1]L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]print (sorted(L, key = by_name))print (sorted(L, key = by_score, reverse=True)) # reverse = True 降序
题目练习:
1、统计红楼梦每个字符的个数:
f = open('hlm-new.txt','r', encoding='utf-8')d = {}for line in f: for key in line: if d.get(key, 0) == False: d[key] = 1 else: d[key] += 1a = sorted(d.items(), key=lambda dd:dd[1], reverse = True)for aa in a: print (aa)2、随机取3个数,n > x > y > z >= 0,并去除重复元组
def allTriples(a):return ([(x , y , z) for x in range(0,a) for y in range(0,x) for z in range(0,y)])print (tuple(allTriples(5)))
3、统计一个字符串中每个单词的元音个数
def vcDic(s):return {x : x.count('a') + x.count('e') + x.count('i') + x.count('o') + x.count('u') for x in s.split()}a = "many of you failed to insert your hawid"print (vcDic(a))4、汉诺塔
def move(n, a, b, c):if n == 1:print (a, '-->', c)else:move(n - 1, a, c, b)move(1, a, b, c)move(n - 1, b, a, c)move(2, 'A', 'B', 'C')
5、杨辉三角
def triangles(): yield [1] l = [1, 1] yield l while True: l = [1]+[l[n]+l[n+1] for n in range(len(l)-1)]+[1] yield ln = 0for t in triangles(): print(t) n = n + 1 if n == 10: break
- Python学习一:Hello Python
- Python学习(一)
- Python学习笔记(一)
- Python学习笔记[一]
- Python学习(一)
- Python学习(一) 数值
- Python学习笔记一
- Python学习 (一)
- Python学习(一)
- Python学习积累《一》
- Python 学习积累《一》
- Python学习 一
- python学习(一):简介
- python学习(一)
- python学习(一)
- python学习笔记(一)
- python学习(一)
- Python学习总结(一)
- Spring AOP中pointcut expression表达式解析
- Go实战--golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
- 【莫比乌斯反演】GCD1
- codevs 1069 关押罪犯 (并查集)
- 对相同原理图修改orcad前缀编号并在allegro拼异形板
- Python学习(一)
- 伪类选择器的用途
- 阿里云关闭防火墙端口不能外网访问
- 如何计算完全二叉树的深度
- [BZOJ1827][Usaco2010 Mar]gather 奶牛大集会(树形dp+维护)
- 视图上的委托
- Java| Java对象克隆Clone(1)
- CentOS 6&7安装ffmpeg
- 字符串右移K位