Python数据类型与运算

Python注重如何解决问题,而不是编程语言的语法和结构。它有高效率的高层数据结构,能简单有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,让它在大多数平台的许多领域中都是一个理想的脚本语言,特别适用于快速的应用开发。

基本语法常识:
1、代码注释方法:#单行注释 ‘’’ ‘’'段落注释;
2、用缩进表示分层:代码缩进4个空格表示分层,注意空格和Tab键不可混用;一般来说,行尾的:表示下一行缩进的开始;
3、语句断行:代码分成几行可以用“\”来换行;一般的,系统会自动识别换行,如在一对括号中间或三引号之间均可换行;
4、print():在输出窗口中显示一些文本或结果;
5、使用转义符:在字符串中嵌入一个引号,可以在引号前加反斜杠\,可以用不同的引号包围这个引号。

数据类型

Python有6种数据类型,分别是数字型Numbers、字符串型String、列表型List、元组型Tuple、集合型Sets和字典型Dictionaries。

数字型Numbers可以划分为整数型int、浮点型float、布尔型bool和复数型complex。

数字有整数(如2)、长整数(大一点的整数)、浮点数(如3.23和52.3E-3)和复数(如-5+4j)。

查看数据类型的方法:>>>type(变量名)

运算符与功能命令

1. 算数运算符

1、+
2、-
3、* 两数相乘或返回一个被重复若干次的字符串
4、/ (注意整型相除返回小数)
5、%
6、** 指数,a**b返回a的b次幂
7、// 取整除,返回上的整数部分

2. 比较运算符

1、==
2、!=
3、>
4、<
5、>=
6、<=
返回值为boolen(True或False)

3. 赋值运算符

1、= 从右侧操作数赋值到左侧操作数
2、+=
3、-=
4、*=
5、/=
6、%=
7、**=
8、//= 地板除,c//=a 相当于c=c//a
注意:没有自增++和自减–
在Python中不能将不同类型的加在一起,如数字和文本不能一起输出,需将数字转化为文本。

4. 常量与变量

1、常量有数值、字符、逻辑真假,如12、yy、”12“、true;
2、变量可以赋值,只能由数字、字母和下划线组成,不能以数字开头,变量区分大小写,不能包含空格和标点符号,以下划线开头的变量有特殊含义。

5. 字符串

1、字符串需用"“或’‘括起来,如’Quote me’,三引号’’’’’'可用于指示多行字符串;
2、转义符:用 \ ’ 表示单引号;
3、在一个字符串中,行末一个单独的 \ 表示字符串在下一行继续;
4、自然字符串,指示不需要转义符那样特别处理,在字符串前加前缀r或R表示遇到 \ 不转义,如a=r"asd \n”;
5、Unicode文本: u"a Unicode string";
6、字符串是不可变的:一旦创造一个字符串,就不去改变它;
7、字符串可以通过 + 连在一起,或 * 重复。

6. 字符串索引与切片

1、定义字符串变量并赋值: str = "Hello my friend"。字符串是一个整体,不能直接修改字符串但能读出某一部分;
2、字符串的索引:从左往右从0开始依次增加,从右往左从-1开始依次减少;
3、字符串的切片:str[1:4]左闭右开,且两个索引都可以省略;
切片扩展形式:str[I:J:K]从I到J-1,每隔K个元素索引一次,如果K为负数就从右向左索引;
4、字符串包含判断操作符为 in ,not in :"He" not in str返回值为boolen,字符串查找方法:str.find('o')返回字符串索引;
5、ord函数将字符转化为ASC||值,chr函数将数字转化为字符:print(ord('a')); print(chr(97)); 6、处理字符串的内置函数:
len(str) 串长度
max('abcdxyz') 寻找字符串中最大的字符
min('asdfghj") 寻找字符串中最小的字符
7、string的转换
int(str)变成整型,如int(“12”)的结果为12
8、string模块提供的方法

S.find(substring,[start,[,end]]);  #可指范围查找子串,返回索引值,否则返回-1
S.rfind(substring,[start,[,end]]); #反向查找
S.index(substring,[start,[,end]]); #同find,找不到会产生ValueError异常
S.rindex(substring,[start,[,end]]);#反向查找 
S.count(substring,[start,[,end]]); #返回找到字串的个数
S.capitalize();                    #首字母大写
S.lower();                         #转小写
S.upper();                         #转大写
S.swapcase();                      #大小写互换
S.split();                         #将string转换为list,默认以空格划分,也可以按照指定字符切分

7. 输入和输出

1、print:可以有多个输出,用逗号分隔;
2、input:将用户输入的内容以字符串的形式返回;可以用int取整函数获得数字。

8. 原始字符串

d=r"c:\news"r表示引号后的东西按原样输出。

9. range

range(n)表示一个从0到n-1的长度为n的序列,也可以定义起始点(range(1,4)表示1、2、3、4),可以定义步长(range(1,30,3)从1开始到30结束、步长为3:1、4、7、…28)
默认情况下,range()起始值是0。
在numpy模块中,arange()类似range函数,需导入模块
import numpynumpy.arange(n)

10. 元组、列表、字典、集合

1、tuple元组
元组的概念类似于向量,元组的元素不能修改,写在小括号 ( ) 里用逗号隔开,元组中的元素类型可以不相同。

a = (1991,2014,'physics','math')
print(a,type(a),len(a))

tup = (1,2,3,4,5,6)
print(tup[0],tup[1:5])    # 1 (2,3,4,5)
tup[0]=11 # 报错,该操作非法,不可以修改tuple的元素,但tuple可包含可变对象如list
tup1 = (20,) # (2)是数字2,整型;(20,)是元组,不可添加和删除
user=('01','02','03','04')
user =( user,'05') # 元组的添加
a,b,c,d = uder # 元组的解包,变量个数等于元组成都

元组内置函数:
len(tuple): 计算元组元素的个数
max(tuple): 返回元组中元素的最大值
min(tuple): 返回元组中元素的最小值
tuple(list): 将列表转化为元组

2、list列表
用方括号 [ ] 标识,列表中元素可以不同。

list(range(1,10,5)   # [1,3,5,7,9]
a = ["I","you","he",5]
a[1:3]  # ['you','he']
a[1] = 'she'  # 列表可修改
a+[6,7,8]  # 列表支持串联操作
a = [1,2,4,5]
a[2:2]=3   # a[n:n]=q 在a中的n位置插入一个q  a变成了[1,2,3,4,5]
word = 'hello' # 将字符串转化成列表
list(word)  # ['h','e','l','l','o']

list加元素
L.append(var) 追加元素,可以追加字符串、数、list等;append函数没有返回值,不能写L=L.appendXXX
L.extend(list)合并两个列表,把list追加到L列表中,不能追加单个元素。
L.insert(index,var)在index位置插入var元素

list删元素
L.pop(index)从list删除元素,并返回被删除的index位置元素,只能删一个。默认删除最后一个。
del L[index] 删除指定索引的元素。
del L[m:n] 删除指定索引范围的元素。
L.remove(var)删除第一次出现的var元素。
list操作符:+,-,*。
list的索引:0,-1,[::]表示取全部索引。[::x]表示步长为x。[::-1]作用同reverse函数。

list排序
L.sort()会改变列表本身,让其中的元素按一定顺序排列,默认从小到大,返回值为空,需用sorted函数
L.sort(reverse=True)从大到小
sorted(a)直接获取列表排序的一个副本,可用于任何可迭代对象,不改变原列表a
a = [1,2,3,4,5,6,7]b =a[:]副本b与a是两个东西,复制列表
c = a # c是a的一个标签,不是真复制,贴了标签
L.reverse()倒序排列,从大到小
list(reversed(L)reversed返回的是一个迭代器,可以用list转化为列表

其他方法
L.count(var)返回var元素在列表中出现的个数
L.index(var) 返回第一个var元素的位置

3、dict字典
字典是一种映射类型(mapping type),是一个无序的”键:值“对集合,每一个元素都是pair,包括key和value。{key:value} key是Integer或String类型,value是任意类型。key必须用不可变类型,在同一个字典中,关键字互不相同。

dic = {}  #创建一个空字典
dic_tel ={'Jack':1557,'TOM':1320,'ROSE':1886} # 创建一个字典

# 用遍历的方法创建一个字典
name =["Ben","Jone","Jhon","Jerry","Anny"]
tel = [6601,6602,6603,6604,6605]
Tellbook={}
for i in range(len(name))
    d1="{}".format(name[i])
    d2="{}".format(tel[i])
    Tellbook[d1]=d2

Tellbook['Wang'] = 3 # 给键赋值,若键不存在,则直接创建
del Tellbook['Wong'] # 删除一个键值对
Tellbook['Ben']  #通过key查询对应的值
list(Tellbook.keys()) # 返回所有key组成的list
sorted(Tellbook.keys()) # 按key对字典排序
'Ben' in Tellbook # 成员测试

dict()函数直接从键值对构造字典;
.items方法
字典的“.”方法
D.get(key,0) 同dict[key]
D.keys() 返回字典键的列表
D.values() 返回字典值的列表
D.items() 将字典转化为元组作为元素的一个列表,返回一个列表,列表的每个元素都是一个键和值组成的元组。
D.update(dict2) 合并字典,将dict2加入当前字典中
D.pop(key) 删除指定键值对
D.popitem() 没有参数则随机删除一个键值对
D.clear() 清空字典
D.copy() 拷贝字典
Dict = dict.copy() 克隆(浅拷贝)
字典排序
sorted(dict.items(),key = lambda e:e[1], reverse = True) 按值排序
sorted(dict.items(),key = lambda e:e[0],reverse = True) 按键排序

4、set集合
set是一个无序、不重复元素的集,set的基本功能是去重,可以用大括号函数 { } 或set()函数创建set集合。

a = set("abracadabra')  # a:{'b','d','r','a','c'}
b = set('alacazam') # b:{'l','m','z','a','c'}
a-b   #{'b','d','r') 从a中去除b的元素
a|b   #{'l','r','a','c','z','b','m','d'} a与b的并集
a&b   #{'a','c'} 交集
a^b   #{'l','r','z','m','b','d'} 交集的补集,对称差
set((2,2,2,4,4)  #{2,4} 集合用于去重

11. 格式化输出

1、%格式化输出
输出字符串:print("His name is %s"%("Aviad")) 输出整数:print("He is %d years old"%(25)) 输出浮点数:print("HIs height is %f m"%(1.83)) 输出指定位数浮点数:print("HIs height is %.2f m"%(1.83)) 输出指定占位符的宽度:print("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83)) 输出指定占位符的宽度(左对齐):print("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83)) 指定占位符0或空格:print("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83)) 2、format格式化输出
str.format用 { } 和 . 替代%。

'{0},{1}'.format('yubg',39)  # 0和1表示位置索引
'{},{}'.format('yubg',39)    # 位置索引可以为空
'{1},{0},{1}'.format('yubg',39) # 可以接收多个无序参数
'{name},{age}'.format(age=39,name='yubg') # 关键字参数

前面的‘’是格式限定符,可以填充与对齐,语法为{:}.^居中,>右对齐,<左对齐,后面加宽度。:后面加填充的字符(只能有一个,缺省时默认空格填充)。

'{:>8}'.format('189')    # '    189'默认空格占位,右对齐
'{:0>8}'.format('189')   # '00000189'
'{:a<8}'.format('189')   # '189aaaaa'
'{:*^7}'.format('189')   # '**189**'
# 精度与类型f
'{:.2f}'.format('321.33345')   # '323.33'

12. strip、split

strip
strip:去掉字符串两边的空格
lstrip:取掉字符串左边的空格
rstrip:取掉字符串右边的空格
split
对字符串进行分割,变成一个list
str = ('www.i-nuc.com') 按照某个字符进行分割:str_split = str.split('.') # ['www','i-nuc','com'] 按照某个字符分割,且分割n次:str_split = str.split('.',1) # ['www','i-nuc.com'] 按照某个字符(或字符串)分割,且分割n次,将分割完成的字符串赋给新的n+1个变量:str1, str2 = str.split('.',1)

13. divmod()

返回一个tuple包括商和余数。

>>>t = divmod(7,3)  # (被除数,除数)
>>>t
(2,1)               # (商,余数)

14. join()

join是split的逆运算。
join函数把一个list或tuple中所有的元素按照定义的分隔符(sep)连起来,仅限于元素是字符型。(元素是数字型将报错 expected str instance)
'sep'.join(seq)

>>> a = ['a','b','c']
>>> sep = '|'
>>> x = "|".join(a)
>>> x
'a|b|c'