即变量的值的类型:
数字类型:int、float、bool、复数(注意:python2中还有long lint,python3中int长度无限制) 科学计数法:e.g. 1.3e5 ------> 1.3 * 10^5bin(int): 转二进制;标识:0b oct(int): 转八进制;标识:0o hex(jbin): 转16进制;标识0x特性:一经定义,值不可更改(即,改变值必须改变内存地址);直接访问 字符串类型: ‘ ’‘ ’‘’ 三种引号引起来的都是字符串常用操作: x.strip() # 默认去空格,也可以去括号内指定的字符x.split() # 分割字符串为列表,默认以空格分割,具体可以根据字符串的特征选取分隔符' '.join(字符串列表) # 引号内可以指定连接符。x.isdigit() # 判断字符串是否是整数。可以用来判断用户输入是否符合要求 age = input('请输入年纪:') if age.isdigit(): age_new = int(age) #将用户输入的字符串转化为int ;如果不加判断的转化,一旦用户输入了非数字的字符串,那么int()转化将导致错误。 print(age_new, type(age_new)) 请输入年纪:20 20 <class 'int'> x.format() # 格式化字符串: string = 'a:{}, b:{}, c:{}' x = string.format(100, 90, 80) print(x)a:100, b:90, c:80 person = 'name:{x}, gender:{y}, age:{z}' x = person.format(x='tom',y='male',z='20') print(x)name:tom, gender:male, age:20 x.place() # 替换字符串。替换并不会改变原值,除非重新赋值 string = 'ich liebe das world' print(string.replace('das','die')) ich liebe die world x.startswith() #以括号内字符开头,判断真假x.endswith() #以括号内字符结尾,判断真假x.find() # 查找,结果以index号显示x.index() # 显示字符串中某个字符的index号,配合切片使用x.[ : : ] # 切片 起始:结束:步长 s = 'das gerne ich, aber kann ich nicht' print(s[s.index('k')]) #找到字母k的索引号,然后用切片的方式打印出来 k x.count() # 计算括号内字符出现的次数x.capitalize() #首字母大写x.upper() # 所有字母大写x.lower() # 所有字母小写x.title() #标题,判断首字母是否大写,如果不是自动大写x.ljust()左对齐, 括号内指定缩进和填充符 s = 'als' print(s.ljust(10,'*')) als******* x.rjust() # 右对齐x.center() # 居中 s = 'als' print(s.center(10,'*')) ***als****列表:逗号分隔多个元素,元素可以是任意类型 定义一个列表:l = [1, 'a', [3, 4]] # l = list([1, 'a', [3, 4]])
取值 l[index], 同字符串,都是有序的遍历: 方法一:for i in l:方法二: count = 0 while count < len(l): print(l[count]) count += 1 l.append(元素) # 默认追加到最后面l.insert(index) # 插入括号内指定位置,默认插在最前面l.pop(index) # 括号内填入index, 指定要删除的元素;不加index,默认删除最后一个元素,相当于pop(-1)。另外,该命令有返回值:返回刚刚删除的值。队列与堆栈的模拟: 队列:先进先出:l.append()===>l.pop(0) 或 l.insert()====>l.pop() 堆栈:先进后出(后进先出):l.append()=====>l.pop() len(l) #统计队列长度l.index(元素)#查索引l.count(元素) #查元素的个数l.extend([列表]) # 合并列表。不同于append, 后者是把列表作为一个元素追加入原列表l.remove(元素) 删除元素,如果有多个重复元素,只删除第一个。(pop是按索引来删)l.sort() # 默认从小到大。排序不像pop有返回值l.sort(reverse = True) # 先按大小排序,再反转l.reverse()# 反转(没有比较大小的属性)包含(也适用于字符串):元素 in 列表中,返回True/False s = 'lena is smart' print('lena' in s) True元组:有序,不可变。定义一个元组 t =(元素1,元素2,#元素可以是任意类型,所以可以嵌套列表,修改里面列表的元素)
t.count(元素) 计数t.index(元素)t[index] 索引t[::]切片、长度、包含 字典:d={key1:value1, key2:value2} key value用冒号分隔 key必须是不可变类型(数字、字母、元组、或者说可hash类型,hash() 括号内传入不可变对象,hash校验出一个值)。vaue可以是任意类型数据。字典的取值:d[key] 字典是无序的(no index)字典的修改:d[key] = value_new字典的循环:d.keys() 提取key d.values() 提取value迭代器遍历字典:这种方法不通过索引,对于列表,元组,字符串,将取出元素,对于字典,取出key for k in d: print(k, d(k)) d.get(key) vs d[key]:后者在key不存在的情况下,会报错。前者不会,这样程序不会崩溃。 集合:set 定义集合:s = {...} ==> s = set({...}) 调用set工厂函数 集合的特点: 集合内的元素是唯一的:自动去重集合内的元素必须是可hash的,也就是不可变类型 集合是无序的,无索引。但是可以遍历:for i in set 集合的作用:作关系运算 s1 & s2 取交集 ===> s1.intersection(s2) s1 | s2 取并集 ===> s1.union(s2) s1 - s2 取差集:在s1, 不在s2 ===> s1.difference(s2) s2 - s1 取差集:在s2,不在s1 ====> s2.difference(s1) s1 ^ s2 取对称差集(不在交集中的)===> s1.sysmmetic_difference(s2) 常用的操作: s.clear() 清空s1.update(s2) s2的值并入s1s1.difference_update(s2) 求与s2的差集,并把差集部分覆盖写入s1 s1 ={ 1, 2, 3, 4, 6} s2 = {1, 5, 6, 2} s1.difference_update(s2) print(s1) 结果是:{3, 4} s1.update(s2) s2的值加入s1s.add(元素) 增加元素s.remove() 删除元素,如果元素不存在报错s.discard(元素) 删除元素,如果元素不存在不报错,better than removes.pop() 随机删(因为集合是无序的)s1.issubset(s2) s1是s2的子集,返回bool值s1.issuperset(s2) s1是s2的父级,返回bool值s1.isdisjoint(s2) 没有交集返回True bool值:True & False 产生bool值:比较运算、成员运算(if m in n: )所有数据类型都自带bool值数据类型返回False的情况:0、None、空(例如:空列表);其余情况都是True 变量的三种比较: x is y # 比较idx == y # 值比较type(x) is type(y) 类型比较 每种数据类型都是一个类,每个类都有方法,对象调用方法用 . 点。e.g. a = 1 (a = int(1),创建一个整型数,就调用int方法,把1传入===》工厂函数(批量生产);同样的 s = 'abc' 即s = str(abc), str也是工厂函数几种赋值: x =1 赋值操作,没有任何返回值链式赋值: a=b=c=d=e=f=10 print(a,b,c,d,e,f) 10 10 10 10 10 10多元赋值:交换变量的值(C语言是通过一个中间值) x = 12 y = 56 x,y = y,x print(x,y) 56 12 解压序列类型: s = 'hello' a,b,c,d,e = s 按索引一一对应 a,_,_,_,e = s 用下划线占位,只取首尾(要丢弃的值赋给_下划线) a,*_,b = s 中间都不要 m,n,*_ =s 只要前两个 *_,m,n = s 只要后两个 a,*_ = [1, 2, 3, 4] 取列表第一个值 其它分类方式: 可变与不可变:一个身份id 不可变(变了内存空间就变了);一个类型 不可变(变了内存空间就变了);而一个值可变,比如 列表的值可变 不可变对象:数字、字符、元组;可变对象:列表、字典。 列表因为可变,内存中会预留空间,所以列表耗内存。 字典在内存中存的has表,占用空间比列表还大,但优化了查询速度。取值方式来分:直接取值:数字(通过绑定的变量名,一次取出整体)序列类型:字符串、元组、列表映射类型:字典