python基础知识《一》
目录
基本对象类型
id()函数:id(3) 查看整形数3的物理地址
Python可直接进行大整数计算
type()函数:type(3) 查看类型
“对象有类型,变量无类型”
>>> x=3
>>> x
3
>>> x=3.0
>>> x
3.0
>>>
但Python在处理浮点数时会出现溢出问题。
python除法应注意:
>>> 5/2
2.5
除法取商
>>> 5//2
2
模块使用:
可以避免Python随意近似问题
>>> import decimal
>>> a=decimal.Decimal("10.0")
>>> b=decimal.Decimal("3")
>>> a/b
直接分数化
>>> from fractions import Fraction
>>> Fraction(10,3)
Fraction(10, 3)
余数
基本表示:
>>> 5%2
1
函数表示:
>>> divmod(5,2)
(2, 1)
学会查看函数属性:
>>> help(divmod)
Help on built-in function divmod in module builtins:
divmod(x, y, /)
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
#四舍五入
>>> round(1.2345,2)
1.23
math使用:
>>> import math
>>> math.pi
3.141592653589793
基本math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
优先级
运算符 描述
** 指数(最高优先级)
~、+、- 按位翻转,一元加号和减号(最后两个的方法名为+@和-@)
*、/、%、// 乘、除、取模和取整除
+、- 加法、减法
>>、<< 右移、左移运算符
& 位与
^、| 位运算符
<=、<、>、>= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in in not 成员运算符
not or and 逻辑运算符
字符串:
#字符串表示“” ‘’两种表示方法:
#注意字符串内部有‘号时处理方法
print('what\'s you name')
print("what's you name")
字符串链接:
x="py"+"thon"
print(x)
#强制转换
y=123
print(x+str(y))
#repr()函数和str()函数一样
转义字符
转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\’ 单引号
\” 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出
输入
name=input("who?")
print(name)
原始字符串:
#两种处理方式:
'''
方式一:反斜杠
方式二:r开头
'''
print('c:\\x')
dos=r'c:\x'
print(dos)
索引与切片:
lang="study python"
print(lang[0])
print("study python"[0])
print(lang.index('p'))
print(lang[0:5])
print(lang[0:5])
print(lang[0:])
print(lang[:])
print(lang[:5])
#注意[0:5]是前面0到4个位置的字符
1,字符串的拼接
>>>s='hello'*2 用乘法重叠
>>>print(s)
hellohello
>>>s='hello'+'world' 用加号拼接
>>>print(s)
helloworld
>>>a='world' 用join 拼接
>>>s=''.join(a)
>>>print(s)
world
2,字符串的统计
>>>s='asjbsbjjdj'
>>>len(s) len() 统计字符串个数(也可以统计元组、列表、集合等)
10
>>>print(s[0]) s[n] 提取字符串中单个字母或元素,n是第几个,从头开始左到右,以0开始排列,0、1、2、3...
a
>>>print(s[-1]) 倒序表示,从结尾提取 右到左,以-1开始,-1、-2、-3....
j
3,字符串切片 提取
切片(取其中某段) 变量[开始:结束:步进],中括号[]定义切片,列表、元组、集合等都可以适用 如: s=‘abcdefghijklmn’
>>>s = 'abcdefghijklmn'
>>>s[0:4] 包括起始值(元素)不包括结束值,默认步进值为1 ,
'abcd'
>>>s[0:6:2] 设置步进值为2 提取
'ace'
>>>s[4:] 当一边没有指定时,就取到边界
'efghijklmn'
>>>s[:4]
'abcd'
>>>s[1:-1] 从结尾提取,下标从-1开始
'bcdefghijklm'
>>>s[-8:]
'ghijklmn'
>>>s[:-8]
'abcdef'
>>>s[:] 表示全选
'abcdefghijklmn'
>>>s[::-1] 使其中的元素 倒叙排列
'nmlkjihgfedcba'
4,字符串切割
split()切割功能,切割后 形成的是列表。
1,按照特定内容切割,‘’引号里可以是空格、字符(默认是空格)
2,可以指定切割次数
3,可以从右面切割
4,按行切割,换行符切割
>>>t='I love you more than I can say'
>>>t.split(' ') 按空格切割
['I', 'love', 'you', 'more', 'than', 'I', 'can', 'say']
>>>t.split('o') 按字符o切割
['I l','ve you m','re than I can say']
>>>t.split(' ',3) 按空格切割 并指定切割次数,3次
['I','love','you','more than I can say']
>>>t.rsplit(' ',2) 从右面开始切割,切割2次
['I love you more than I','can','say']
>>>l='''江畔何人初见月
江月何年初照人
人生代代无穷已
江月年年望相似'''
>>>l.splitlines() splitlines() 按行切割
['江畔何人初见月','江月何年初照人','人生代代无穷已','江月年年望相似']
5,字符串的删除
1,strip()默认删除行首或者行尾的空白符(包括’\n’, ‘\r’, ‘\t’, ’ ')
2,切片提取进行删除
>>>s=' ---anj123kks+++ '
>>>s.strip() 删除两边的空白
'---anj123kks+++'
>>>print(s.strip()) 测试打印的结果
---anj123kks+++
>>>s.lstrip() 删除左边的空白字符
'---anj123kks+++ '
>>>s.rstrip() 删除右边的空白字符
' ---anj123kks+++'
>>>s.strip().strip('-+') 删除两边的空白和‘- +’字符
'anj123kks'
>>>s[4:13] 使用切片删除不需要的字符
'anj123kks'
>>>s[4:6]+s[11:13] 切片和拼接删除
'anks'
6,python中find() 函数查找字符串下标位置
从一个字符串s中查找另一个字符串或字符第一次出现的下标位置,找不到返回 -1.
>>>s='abcdedjcjdlslk'
>>>s1='abc'
>>>s.find(s1) 返回第一次出现abc的位置下标0
0
>>>s.find('j') 返回第一次出现 j 的位置下标6
6
>>>s.find('j',2) 从下标位置2开始查找,找到返回第一次出现的位置下标
6
>>>s.find('j',7) 从下标位置7开始查找
8
>>>s.find('j',10) 从下标位置10开始查找,没有返回-1
-1
---------------------
格式化输出
print("I like {1} {0}".format("python","study"))
print("I like {0:6} {1:}".format("python","study"))
data={"name":"xxx","age":10}
print("{name} is {age}".format(**data))
#print 'hello %s and %s' % ('df', 'another df')
#print 'hello %(first)s and %(second)s' % {'first': 'df', 'second': 'another df'}
列表
#列表
#基本:
a=['12','45','xxxyz']
print(a)
#索引切片
print(a[1])
print(a[2][0:4]) #0为物理地址,4为位置
print(a[-1])
print(a[-3:-1]) #注意-1
print(a[::2])
print(a[::1])
print(a[::])
#反转
print(a[::-1])
print(a[2][::-1])
print(list(reversed(a)))
列表基本操作:
1.创建列表
用方括号([])来表示,用逗号(,)分离元素
bicycles=['trek','cannodale','redline','specialized']
2.访问元素
bicycles[i] -1表示末尾,-2表示次末尾...
3.修改元素的值
bicycles[i]='XXX'
4.添加元素
列表末尾:bicycles.append('XXX')
列表任意位置:bicycles.insert(n,'XXX') n表示位置
5.删除元素
知道元素位置:del bicycles[i]
知道元素的值:bicycles.remove['XXX']
删除第i个元素并获取该元素的值:a=bicycles.pop(i) pop()表示末尾
6.列表排序
永久修改原始列表的顺序:bicycles.sort()
反序修改原始列表的顺序:bicycles.sort(reverse=True)
不修改原始列表的顺序:bicycles.sorted()
反序不修改原始列表的顺序:bicycles.sorted(reverse=True)
反转原始列表顺序:bicycles.reverse()
7.列表长度
len(bicycles)
8.遍历列表
for bicycle in bicycles:
print(bicycle)
bicycle为自定义的变量名,bicycles为列表名
9.range()函数
range(a,b,c)表示从a到b,间隔为c:a,a+c,a+2c,...,b-c-1
10.list()函数
numbers=list(range(1,6))
numbers:[1,2,3,4,5,6]
11.列表解析
squares=[value**2 for value in range(1,11)]
squares:[1,2^2,3^2,....,11^2]
12.列表切片
A[x:y]:第x到y之间的元素,不包括A[y]
A[x: ]:第x到末尾
A[ :y]:开头到第y
A[ : ]: 全部元素
常用函数:
1.len(list)
列表元素的个数
2.max(list)\min(list)
返回列表元素最大值\最小值
3.list(seq)
元组转换为列表
4.list.append(obj)\list.pop(obj=list[-1])
末尾添加对象\移除对象,默认最后
5.list.extend(seq)
末尾添加一个列表,扩充
PS:4、5两个方法的效率远大于用运算符‘+’来实现
6.list.index(obj)
从列表中找出某个值第一个匹配的引索,没有找到对象抛出异常
7.list,count(obj)
计数
8.list.remove(obj)
移除列表中第一个匹配的元素
9.list.reverse()
求逆序,注意这里没有返回值,得到list的逆序
10.list.sort([func])
排序,可选参数,若无参数得到小到大排列顺序。只能同类型进行比较
11.list.clear()
清空
12.list.copy()
复制
元组:
t=1,"12",["123",12],(1234)
print(t)
#元组是用()包括的
#切片与索引
print(t[2])
print(t[2][1])
#所有在列表中修改的方法在元组中均有效
字典:
1.创建和使用字典
字典由多个键及其对应的值组成,字典中的键是唯一的,但值是不唯一的。
2.dict方法:
(1)将列表转换为字典
(2)创建字典
3.同样,字典与序列一样,也有很多操作:
(4)get用于访问键值所对应的值。如果键不存在,默认返回为None
(5)has_key 用于查找字典中是否含有给出的键。d.has_key(k)相当于k in d。
(7) keys和iterkeys
keys返回字典项中的键,iterkeys返回一个迭代器对象
(8)pop:获取到键,并将键从字典中删除
(9) popitem:弹出随机的项,因为字典项没有顺序而言,所以是随机的删除
(10)setdefault:用来设置相应的键值。当键不存在时,返回默认值,并更新键值。如果键存在,则返回对应的值。
(11)update用来通过一个字典项更新为另一个字典项
(12)values和itervalues:以列表的方式返回字典中的值
集合:
#集合
a=set(['a','b','c','d'])
b=set(['c','d','e','f'])
c=set(['a','b'])
#判断
print(a==b)
print(c<a)#判断子集
print(a>a)#判断超集
#运算
#并:
print(a|b)
#交
print(a&b)
#差
print(a-b)#a相对b的差
#对称差集
print(a.symmetric_difference(b))#除去ab共有的,剩下的元素