一:数字 int
int(整型):
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型):
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大
注意:自从python2.2起,如果整数发生溢出,python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了
float(浮点型):
浮点数用来处理实数,即带有小数的数字,类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下一位表示符号int
二:字符串 str
str
字符串是 Python 中最常用的数据类型。我们可以使用引号,双引号,或三引号来创建字符串。
- a = 'poe'
- b = "bruce"
- c = """Jacky Chen"""
1:字符串连接
方法一:join方法
- a = ['a','b','c','d']
- content = ''
- content = ' '.join(a)
- print(content)
方法二:用字符串的替换占位符替换
- a = ['a','b','c','d']
- content = ''
- content = '%s%s%s%s' % tuple(a)
- print(content)
方法三:for循环
- a = ['a','b','c','d']
- content = ''
- for i in a:
- content += i
- print(content)
注意:方法三效率低,不推荐使用!
原因:在循环连接字符串的时候,他每次连接一次,就要重新开辟空间,然后把字符串连接起来,再放入新的空间,再一次循环,又要开辟新的空间,把字符串连接起来放入新的空间,如此反复,内存操作比较频繁,每次都要计算内存空间,然后开辟内存空间,再释放内存空间,效率非常低,你也许操作比较少的数据的时候看不出来,感觉影响不大,但是你碰到操作数据量比较多的时候,这个方法就要退休了。
2:字符串截取
我们可以通过索引来提取想要获取的字符,可以把python的字符串也做为字符串的列表就更好理解
python的字串列表有2种取值顺序:
1是从左到右索引默认0开始的,最大范围是字符串长度少1
- s = 'ilovepython'
- s[0]的结果是i
2是从右到左索引默认-1开始的,最大范围是字符串开头
- s = 'ilovepython'
- s[-1]的结果是n
上面这个是取得一个字符,如果你的实际要取得一段子串的话,可以用到变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
比如
- s = 'ilovepython'
- s[1:5]的结果是love
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界,比如上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p
注:s[1:5]形式截头不截尾
3:字符串替换
方法一:使用repalce方法
- a = 'hello world'
- b = a.replace('world','python')
- print(b)
方法二:使用正则表达式
- import re
- a = 'hello world'
- strinfo = re.compile('world')
- b = strinfo.sub('python',a)
- print(b)
4:字符串比较
cmp方法比较两个对象,并根据结果返回一个整数。cmp(x,y)如果X< Y,返回值是负数 如果X>Y 返回的值为正数。
- str1 = 'strch'
- str2 = 'strchr'
- print(cmp(str1,str2))
- ## -1
5:字符串相加
我们通过操作符号+来进行字符串的相加,不过建议还是用其他的方式来进行字符串的拼接,这样效率高点。
原因:在循环连接字符串的时候,他每次连接一次,就要重新开辟空间,然后把字符串连接起来,再放入新的空间,再一次循环,又要开辟新的空间,把字符串连接起来放入新的空间,如此反复,内存操作比较频繁,每次都要计算内存空间,然后开辟内存空间,再释放内存空间,效率非常低。
- str1 = 'strch'
- str2 = 'strchr'
- print(str1+str2)
- ## strchstrchr
6:字符串查找
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法。
方法一:find方法
- info = 'abca'
- print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
- info = 'abca'
- print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3
- info = 'abca'
- print info.find('')##返回-1,查找不到返回-1
方法二:index方法
python 的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1
- info = 'abca'
- print info.index('a')
- print info.index('')
7:字符串分割
字符串分割,可以用split,rsplit方法,通过相应的规则来切割成生成列表对象
- info = 'name:haha,age:20$name:python,age:30$name:fef,age:55'
- content = info.split('$')
- print content
- ## ['name:haha,age:20', 'name:python,age:30', 'name:fef,age:55']
8:字符串反转
- a = 'abcd'
- b = a[::-1]##[::-1]通过步进反转
- print b
9:字符串编码
10:字符串追加和拼接
通过字符串的占位符来进行字符串的拼接
- #1 元组拼接
- m = 'python'
- astr = 'i love %s' % m
- print astr
- #2 字符串的format方法
- m = 'python'
- astr = "i love {python}".format(python=m)
- print astr
- #3 字典格式化字符串
- m = 'python'
- astr = "i love %(python)s " % {'python':m}
- print astr
11:字符串复制
- #通过变量来进行赋值
- fstr = 'strcpy'
- sstr = fstr
- fstr = 'strcpy2'
- print sstr
12:字符串长度
- #通过内置方法len()来计算字符串的长度,注意这个计算的是字符的长度。
- aa = 'afebb'
- bb = '你'
- print len(aa)
- print len(bb)
13:字符串大小写
- #通过下面的upper(),lower()等方法来转换大小写
- S.upper()#S中的字母大写
- S.lower() #S中的字母小写
- S.capitalize() #首字母大写
- S.istitle() #S是否是首字母大写的
- S.isupper() #S中的字母是否便是大写
- S.islower() #S中的字母是否全是小写
14:字符串去空格
- #通过strip(),lstrip(),rstrip()方法去除字符串的空格
- S.strip() #去掉字符串的左右空格
- S.lstrip() #去掉字符串的左边空格
- S.rstrip() #去掉字符串的右边空格
- #注意:strip()函数不仅可以去空格还可以去除指定的字符,如
- S.strip("\n")
15:字符串其他方法
- #字符串相关的其他方法:count(),join()方法等。
- S.center(width, [fillchar]) #中间对齐
- S.count(substr, [start, [end]]) #计算substr在S中出现的次数
- S.expandtabs([tabsize]) #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
- S.isalnum() #是否全是字母和数字,并至少有一个字符
- S.isalpha() #是否全是字母,并至少有一个字符
- S.isspace() #是否全是空白字符,并至少有一个字符
- S.join()#S中的join,把列表生成一个字符串对象
- S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
- S.rjust(width,[fillchar]) #右对齐
- S.splitlines([keepends]) #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
- S.swapcase() #大小写互换
三:列表 list
list
1:创建列表
- list1 = ['physics', 'chemistry', 1997, 2000];
- list2 = [1, 2, 3, 4, 5 ];
- list3 = ["a", "b", "c", "d"];
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等
2:访问列表
- list1 = ['physics', 'chemistry', 1997, 2000];
- list2 = [1, 2, 3, 4, 5, 6, 7 ];
- print(list1[0])
- print(list2[2:5])#截头不截尾
- ## physics
- ## [3, 4, 5]
3:append方法:在列表末尾添加新的对象
- aList = [123, 'xyz', 'zara', 'abc'];
- aList.append( 2009 );
- print "Updated List : ", aList;
- ## Updated List : [123, 'xyz', 'zara', 'abc', 2009]
4:count方法:统计某个元素在列表中出现的次数
- aList = [123, 'xyz', 'zara', 123];
- print(aList.count(123))
- ## 2
5:extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
- aList = [123, 'xyz', 'zara', 'abc', 123];
- bList = [2009, 'manni'];
- aList.extend(bList)
- print "Extended List : ", aList ;
- ## Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
6:index() 函数用于从列表中找出某个值第一个匹配项的索引位置
- aList = [123, 'xyz', 'zara', 'abc'];
- print "Index for xyz : ", aList.index( 'xyz' ) ;
- print "Index for zara : ", aList.index( 'zara' ) ;
- ##Index for xyz : 1
- ## Index for zara : 2
7:insert() 函数用于将指定对象插入列表的指定位置
- aList = [123, 'xyz', 'zara', 'abc']
- aList.insert( 3, 2009)
- print "Final List : ", aList
- ## Final List : [123, 'xyz', 'zara', 2009, 'abc']
insert()接收两个参数,list.insert(index, obj),第一个参数index为要插入的索引位置,第二个参数要插入的元素
8:pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
- aList = [123, 'xyz', 'zara', 'abc'];
- print "A List : ", aList.pop();
- print "B List : ", aList.pop();
- ## A List : abc
- ## B List : zara
9:remove() 函数用于移除列表中某个值的第一个匹配项
- aList = [123, 'xyz', 'zara', 'abc', 'xyz'];
- aList.remove('xyz');
- print "List : ", aList;
- aList.remove('abc');
- print "List : ", aList;
- ## List : [123, 'zara', 'abc', 'xyz']
- ## List : [123, 'zara', 'xyz']
10:列表的四种遍历方法
- aList = [123, 'xyz', 'zara', 123];
方法一:只遍历列表中的值
- for value in aList :
- print(value)
- ####################
- 123
- xyz
- zara
- 123
方法二:如果需要遍历列表中的索引与值,就需要用到enumerate
- for key,value in enumerate(aList) :
- print(key,value)
- ######################
- (0, 123)
- (1, 'xyz')
- (2, 'zara')
- (3, 123)
enumrate:为可迭代的对象添加序号,默认从0开始!因为列表的索引也是从0开始,所以我们在enumerate中不指定第二个参数,如有需要,可以指定从几开始,如下:
- for key,value in enumerate(aList,1) :
- print(key,value)
- ######################################
- (1, 123)
- (2, 'xyz')
- (3, 'zara')
- (4, 123)
方法三:
- for i in range(len(aList)) :
- print(i,aList[i])
- ##############################
- (0, 123)
- (1, 'xyz')
- (2, 'zara')
- (3, 123)
range和xrange:指定范围,生成指定的数字
方法四:使用iter()
- for i in iter(aList) :
- print(i)
- ##########################################
- 123
- xyz
- zara
- 123
四:元组 tuple
tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
tuple只有两个可使用的功能:count , index
1:创建元组
- tup1 = ();#创建空元组
- tup1 = (50,);#元组中只包含一个元素时,需要在元素后面添加逗号
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。元组的访问与列表一样!
2:元组的连接组合
- tup1 = (12, 34.56);
- tup2 = ('abc', 'xyz');
- # 以下修改元组元素操作是非法的。
- # tup1[0] = 100;
- # 创建一个新的元组
- tup3 = tup1 + tup2;
- print tup3;
- ##########################################
- (12, 34.56, 'abc', 'xyz')
3:删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
- tup = ('physics', 'chemistry', 1997, 2000);
- print tup;
- del tup;
- print "After deleting tup : "
- print tup;
- ##########################################
- 以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
- ('physics', 'chemistry', 1997, 2000)
- After deleting tup :
- Traceback (most recent call last):
- File "test.py", line 9, in <module>
- print tup;
- NameError: name 'tup' is not defined
五:字典 dict
dict
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
- d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
1:访问字典里的值
- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
- print "dict['Name']: ", dict['Name'];
- print "dict['Age']: ", dict['Age'];
- ##########################################
- dict['Name']: Zara
- dict['Age']: 7
2:修改字典里的值
- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
- dict['Age'] = 8; # update existing entry
- dict['School'] = "DPS School"; # Add new entry
- print "dict['Age']: ", dict['Age'];
- print "dict['School']: ", dict['School'];
- ##########################################
- dict['Age']: 8
- dict['School']: DPS School
3:删除操作
能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令,如下实例:
- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
- del dict['Name']; # 删除键是'Name'的条目
- dict.clear(); # 清空词典所有条目
- del dict ; # 删除词典
- print "dict['Age']: ", dict['Age'];
- print "dict['School']: ", dict['School'];
- ##########################################
- dict['Age']:
- Traceback (most recent call last):
- File "test.py", line 8, in <module>
- print "dict['Age']: ", dict['Age'];
- TypeError: 'type' object is unsubscriptable
clear() 函数用于删除字典内所有元素:
- dict = {'Name': 'Zara', 'Age': 7};
- print "Start Len : %d" % len(dict)
- dict.clear()
- print "End Len : %d" % len(dict)
注:clear函数是删除字典里的所有元素,删除后,该字典仍然存在,不过是个空字典而已
4: copy() 函数返回一个字典的浅复制
- dict1 = {'Name': 'Zara', 'Age': 7};
- dict2 = dict1.copy()
- print "New Dictinary : %s" % str(dict2)
- ##########################################
- New Dictinary : {'Age': 7, 'Name': 'Zara'}
有关深浅复制的区别,请点击这里!
5:fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
- seq = ('name','age','sex')
- dic = dict.fromkeys(seq)
- print(dic)
- #########################################
- {'age': None, 'name': None, 'sex': None}
可以指定一个值,如:
- seq = ('name','age','sex')
- dic = dict.fromkeys(seq,10)
- print(dic)
- ##########################################
- {'age': 10, 'name': 10, 'sex': 10}
6:get() 函数返回指定键的值,如果值不在字典中返回默认值
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.get('Age'))
- print(dic.get('Sex','Never'))#Never为设置的默认值
- ##########################################
- 27
- Never
7:has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.has_key('Name'))
- print(dic.has_key('Sex'))
- ##########################################
- True
- False
8:items() 函数以列表返回可遍历的(键, 值) 元组数组
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.items())
- ##########################################
- [('Age', 27), ('Name', 'Zara')]
9:keys() 函数以列表返回一个字典所有的键
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.keys())
- ##########################################
- ['Age', 'Name']
10:values() 函数以列表返回字典中的所有值
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.values())
- ##########################################
- [27, 'Zara']
11:update() 函数把字典dict2的键/值对更新到dict1里
- dict1 = {'Name': 'Zara', 'Age': 7}
- dict2 = {'Sex': 'female' }
- dict1.update(dict2)
- print(dict1)
- ##########################################
- {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
12:字典的遍历
方法一:
- dict1 = {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
- for k,v in dict1.items() :
- print(k,v)
- ##########################################
- ('Age', 7)
- ('Name', 'Zara')
- ('Sex', 'female')
方法二:
- dict1 = {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
- for (k,v) in dict1.items() :
- print(k,v)
- ##########################################
- ('Age', 7)
- ('Name', 'Zara')
- ('Sex', 'female')