跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

编程爱好者联盟 2016-11-29

跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

运算符

设定:a=10,b=20 。

  1. 算数运算

跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

2、比较运算

跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

3、赋值运算

跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

4、逻辑运算

跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

5、成员运算

跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

基本数据类型

1、数字

int(整型)

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1。

    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1。

以下引用:http://www.cnblogs.com/linjiqin/p/3608541.html

数字类型转换:

int(x [,base]) 将x转换为一个整数

float(x ) 将x转换到一个浮点数

complex(real [,imag]) 创建一个复数

str(x) 将对象x转换为字符串

repr(x) 将对象x转换为表达式字符串

eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s) 将序列s转换为一个元组

list(s) 将序列s转换为一个列表

chr(x) 将一个整数转换为一个字符

unichr(x) 将一个整数转换为Unicode字符

ord(x) 将一个字符转换为它的整数值

hex(x) 将一个整数转换为一个十六进制字符串

oct(x) 将一个整数转换为一个八进制字符串

数字函数转换:

abs(x) 返回数字的绝对值,如abs(-10) 返回 10

ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5

cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045

fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0

floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4

log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0

log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0

max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。

min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。

modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y) x**y 运算后的值。

round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j

2、布尔值

    真或假

    1 或0

3、字符串

    字符串常用功能:

  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

str.strip().lstrip().rstrip(',') #去空格及特殊符号

len(str) #获取字符串长度

str.lower() #将字符串转换为小写

str.upper() #将字符串转换为大写

str.swapcase() #字符串大小写互换

str.capitalize() #字符串首字母大写

strncat(str_1,str_2,n) #str_1末尾添加指定长度的字符串str_2

strncmp(str_1,str_2,n) #字符串指定长度比较

strncpy(str_1,str_2,n) #复制指定长度的字符串str_2到str_1

strnset(str_1,str_2,n) #将字符串str_1前n个字符替换为指定的字符str_2

strrev(str) #翻转字符串

strtok(str_1,str_2) #以str_2分割str_1

字符串截取:

str = '0123456789′

str[0:3] #截取第一位到第三位的字符

str[:] #截取字符串的全部字符

str[6:] #截取第七个字符到结尾

str[:-3] #截取从头开始到倒数第三个字符之前

str[2] #截取第三个字符

str[-1] #截取倒数第一个字符

str[::-1] #创造一个与原字符串顺序相反的字符串

str[-3:-1] #截取倒数第三位与倒数第一位之前的字符

str[-3:] #截取倒数第三位到结尾

str[:-5:-3] #逆序截取

字符串在输出时的对齐方式:

str.ljust(width,[fillchar]) #输出width个字符,str左对齐,不足部分用fillchar填充,默认为空格

str.rjust(width,[fillchar]) #右对齐

str.center(width,[fillchar]) #中间对齐

str.zfill(width) #把str变成width长,并在右对齐,不足部分用0补足

字符串中的搜索与替换:

str.find(substr,[start,[end]]) #返回str中出现substr的第一个字母的标号,如果str中没有则返回-1。start和end作用相当于在str[start:end]中搜索

str.index(substr,[start,[end]]) #与find()相同,只是在str中没有时,会返回一个运行时错误

str.rfind(substr,[start,[end]]) #返回str中最后出现的substr的第一个字母的标号,如果str中没有则返回-1。

str.rindex(substr,[start,[end]]) #同上推理

str.count(substr,[start,[end]]) #计算substr在str中出现的次数

str.replace(oldstr,newstr,[count]) #把str中的oldstr替换为newstr,count为替换次数。

str.strip([chars]) #把str中前后chars中有的字符全部去掉,可以理解为把str前后chars替换为none

str.lstrip([chars]) #替换str中chars的左边部分

str.rstrip([chars]) #替换str中chars的右边部分

str.expandtabs([tabsize]) #把str中的tab字符替换为空格,每个tab替换为tabsize个空格,默认是8个

字符串的分割与组合:

str.split([sep,[maxsplit]]) #以sep为分隔符,把str分成一个list,maxsplit表示分割的次数。默认的分隔符为空白字符

str.join(seq) #把seq代表的序列——字符串序列,用str连接起来

字符串的测试、判断,返回bool值:

str.startswith(prefix[,start[,end]]) #是否以prefix开头

str.endswith(suffix[,start[,end]]) #是否以suffix结尾

str.isalnum() #判断是否全是字母和数字,并且至少一个字符

str.isdigit() #判断是否全是数字,并且至少一个字符

str.isspace() #判断是否全是空白字符,并且至少一个字符

str.islower() #判断str中的字母是否全是小写

str.isupper() #判断str中的字母是否全是大写

str.istitle() #判断str的首字母是否大写

4、列表

    list是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目。列表中的项目包括在方括号中,一旦创建了一个列表,就可以添加、删除、修改,或者搜索列表中的项目。列表是可变的数据类型,即数据类型是可以被改变的,并且列表是可以嵌套的。

    创建列表:

name_list = ['golden','anle','sevel','dickc']

name_list = list([name_list = ['golden','anle','sevel','dickc'])

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含

list[0] #取出第一个元素

list[-1] #取出最后一个元素

list[:] 或 list[:len(list)] #取出所有列表元素

list[0:n] #取出从第0号到第n-1号元素

list[0] = 'xx' #修改第0号的元素值

del list[0] #删除第0号元素

if 'xx' in list: #判断元素'xx'是否在列表

len(list) #获取列表元素的个数

max(list) #取出列表中元素的最大值

min(list) #取出列表中元素的最小值

list.append('xx') #列表中添加元素'xx'

list.insert(0,'xx') #在列表第0号位置上插入元素'xx'

list.index('xx') #返回元素'xx'在列表中第一次出现的索引值

list.count('xx') #返回元素'xx'在列表中的个数

list.remove('xx') #移除第一次出现的元素'xx'

list.pop() #移除元素,默认从最后移除,返回该元素值,括号中可加入元素索引值来移除

list.sort() #排序

list.reverse() #反向

list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值

5、元组

元组与列表十分相似,不过元组是不可变的,即不能修改元组。元组通过圆括号中用逗号分隔的项目定义。元组通常用在使语句或用户定义的函数能够安全的采用一组值的时候,即被使用元组的值不会改变。元组可以嵌套。

    创建元组:

ages = (12,13,14,15,16)

ages = tuple((12,13,14,15,16))

基本操作:

  • 索引
  • 切片
  • 循环
  • 长度
  • 包含

6、字典(无序)

    字典将键和值联系在一起,键必须是唯一的。键值对在字典中的标记方式:d = {key1:value1,key2:value2,key3,value3…}。键/值对用冒号分割,而各个键值对用逗号分隔,所有这些都包括在花括号里。字典中的键/值对是无序的。

    创建字典:

person = {"name":"wang","age":22}

person = {"name":"wang","age":22}

    常用操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

person = {"name":"wang","age":22}

person = {"name":"wang","age":22}

person.keys() #返回包含字典所有key的列表

person.values() #返回包含字典所有value的列表

person.items() #返回所有键值的元组的列表

person.clear() #删除字典中的所有项或元素

person.copy #浅拷贝

person.fromkeys(seq,val=None) #创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None)

person.get(key,default=None) #返回字典中key对应的值,若key不存在,则返回default的值(default默认为None)

person.update(person2) #将字典person2的键值对添加到字典person中

for key in person.keys():print(key) #遍历字典的key(键)

for value in person.values():print(value) #遍历字典的value(值)

for item in person.items():print(item) #遍历字典的项(元素)

for item,value in person.items():print('key=%s,value=%s'%(item,value)) #遍历字典的key-value

person[new_key] #添加一个数据项(新元素)或键值对

person[old_key] #更新一个数据项(元素)或键值对

del person[key] #删除键key的项,

del person #删除整个字典

person.pop(key) #删除键key的项并返回key对应的value值

7、其他

1、for循环

    用户按照顺序循环可迭代对象中的内容。

list = [11,22,33,44]

for item in list:

   print(item)

2、enumrate

    为可迭代的对象添加序号。

list = [11,22,33]

for k,v in enumerate(list,1):

   print(k,v)

3、range和xrange

    指定范围,生成指定的数字。

range(1,10) #[1, 2, 3, 4, 5, 6, 7, 8, 9]

rang(1,10,2) #[1, 3, 5, 7, 9]

range(30,0,-2) #[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]

用法:

for i in range(30,0,-2):

   print(i)

xrange用法与range完全相同,不同的是生成的不是一个list对象。在生成很大的数字序列的时候,用xrange会比range性能优秀很多,因为xrange不需要一上来就开辟一块很大的内存空间。在做循环的时候,推荐使用xrange,除非一定要返回一个列表。