基本数据类型分类
不可变数据:Number、 String 、Tuple(元组)
可变数据:List、Dictionary(字典)、Set(集合)
Number
每个数字再python中都是一个对象,每个对象在内存中都有自己的地址,这就是它的身份。
id(3)
140574842id(3.222222)
140612356id(3.0)
140612356
在编程中,经常要用到“变量”和“数”建立起对应关系,对象是有类型的,变量无类型
x=5
x
5x=6
x
6
简单的四则运算
在数学中,整数是可以无限大的,但是在计算机中整数是不可以无限大的
4+2
64.0+2
6.04.0+2.0
6.0
整数溢出问题
python支持“无限精度”的整数,所以不用考虑整数溢出问题,Int类型与任意精度的long整数类可以无缝转化
除法
1.整数与整数相除
5 / 2
27 / 2
38 / 2
4
2.浮点数与整数相除
不管是被除数还是除数,只要有一个是浮点数,结果就是浮点数
9.0 / 2
4.59 / 2.0
4.59.0/2.0
4.58.0 / 2
4.0
引用模块解决除法问题
python之所以受人欢迎,一个很重要的原因就是轮子多,正是因为轮子多,我们可以选择的多,就可以有各种不同的速度享受了,这里的轮子在python中叫“模块”,有的还叫“库”、“类”
具体用法如下:
1.import module-name.
2.from module1 import module11
引用了模块之后再做除法,不管什么情况,都能得到浮点数的结果
from_future_import division
5 / 2
2.59 / 2
4.59.0 / 2
4.59 / 2.0
4.5
常用的数学函数
abs(x) #返回数字的绝对值,如abs(-10) 返回 10
math.fabs(x) #返回数字的绝对值,如math.fabs(-10) 返回10.0
exp(x) #返回e的x次幂(e^x),如math.exp(1) 返回2.718281828459045
math.log(x) #返回x的对数如math.log(math.e)返回1.0,math.log(100,10)返回2.0
math.log10(x) #返回以10为基数的x的对数,如math.log10(100)返回 2.0
math.modf(x) #返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x) #返回x**y 运算后的值
math.sqrt(x) #返回数字x的平方根
round(x,[n]) #返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
math.sin(x) #返回的x弧度的正弦值
String
字符串:由零个或多个字符组成的有限串行
字符串是对象类型,用str表示
“I Love Python.”
‘I Love Python’‘I Love PYTHON’
‘I Love PYTHON’
变量和字符串
通过赋值语句,对对象与某个变量关联起来
b=“hello world”
b
‘hello world’print b
hello worldtype(b)
<type ‘str’>
连接字符串
用“+”把两给字符串相加,就相当于把两个字符串连接起来
注:拼接起来的两个字符串必须是同一类型的
a=1989
b=“free”
print b+str(a) //也可以用repr(a)
free1989
raw_input 和 print
raw_input(“input your name:”)
input your name:python
‘python’type(name)
<type ‘str’>age=raw_input(“how old are you”)
how old are you 10age
‘10’type(age)
<type ‘str’>
索引和切片`
str = 'Runoob'
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 输出字符串两次
print (str + "TEST") # 连接字符串
#输出
Runoob
Runoo
R
noo
noob
RunoobRunoob
RunoobTEST
List
列表切片索引
list.append(obj) #在列表末尾添加新的对象
list.count(obj) #统计某个元素在列表中出现的次数
list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
list.pop([index=-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) #移除列表中某个值的第一个匹配项
list.reverse() #反向列表中元素
list.sort( key=None, reverse=False) #对原列表进行排序,True 降序,False 升序(默认)
list.clear() #清空列表
list.copy() #复制列表
Dictionary
字典是另一种可变容器模型,且可存储任意类型对象,这一章节主要需要学习遍历字典中的数据,存储字典的列表,存储列表的字典和存储字典的字典
一:学会创建一个空字典并修改字典中的值
alien_0={}
alien_0['color']='green'
alien_0['points']=5
print ("the alien is now"+ alien_0['color']+".")
alien_0[color]='yellow'
print("the alien is now"+alien_0[color]+".")
二:字典中的基本操作
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
'''
del dict['Name'] # 删除键 'Name'
dict.clear() # 清空字典
del dict # 删除字典
'''
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
#输出
dict['Name']: Runoob
dict['Age']: 7
三:遍历字典
(1)遍历所有键—值对(利用for 循环)
favorite_languages={
‘jen’:‘python’,
‘sarah’:‘c’,
‘edward’:‘ruby’,
‘phil’:‘python’,}
for name,language in favorite language.items():
print(name.title() +’’ 's favorite language is "+language.title() + “.”)
(2)遍历字典中的所有键:在不需要字典中的值的时候,利用方法keys()
favorite_languages={
‘jen’:‘python’,
‘sarah’:‘c’,
‘edward’:‘ruby’,
‘phil’:‘python’,}
for name in favorite_languages.keys():
print (name.title())输出的结果为(如下):
jen
sarah
phil
(3)按顺序遍历字典中的所有键( 借助sorted()函数 )
favorite_languages={
‘jen’:‘python’,
‘sarah’:‘c’,
‘edward’:‘ruby’,
‘phil’:‘python’,}
for name inn sorted (favorite_languages.keys()):
print (name.title()+",thank you for taking the poll.")
输出的结果为
jen,thank you for taking the poll.
phil,thank you for taking the poll.
sarah,thank you for taking the poll.
(4)遍历字典中的所有值( 使用方法values() 其中还使用了…in set…作用是排除重复的值)
favorite_languages={
‘jen’:‘python’,
‘sarah’:‘c’,
‘edward’:‘ruby’,
‘phil’:‘python’,}
print(“the following languages have been mentioned”)
for language in set favorite_languages.values():
print(language.title())
输出
python
c
ruby
四:字典列表
#创建一个空列表
aliens=[]
#创建30个绿色的外星人
for alien_number in range(30):
new_alien={‘color’ : ‘green’ ,‘points’ : 5 , ‘speed’: ‘slow’ }
aliens.append(new_alien)
#显示前五个外星人
for alien in aliens[:5]:
print(alien)
print("…")
#显示创建了多少个外星人
print(“total number of aliens :” +str(len(aliens)))
五;在字典中的存储字典
users={
‘aeinstein’:{
‘first’:‘albert’,
‘last’:‘einstein’,
‘location’:‘princeton’,
},
‘mcurie’:{
‘first’:‘marie’,
‘last’:‘curie’,
‘location’:‘Paris’,
},
}
for username,user_info in users.items():
print("\nUsername:" + username)
full_name=user_info[‘first’]+" “+user_info[‘last’]
location=user_info[‘location’]
print(”\tFull name:" + full_name.title())
print("\tLocation:" +location.title())输出
Username:aeinstein
Full name:Albert Einstein
Location:princeton
Username:mcurie
Full name:Marie Curie
Location:Paris
Set
集合是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 去重功能
#输出
{'orange', 'banana', 'pear', 'apple'}
'orange' in basket # 快速判断元素是否在集合内
#输出
True
'crabgrass' in basket
#输出
False
# 下面展示两个集合间的运算
a = set('abracadabra')
b = set('alacazam')
print(a)
#输出
{'a', 'r', 'b', 'c', 'd'}
print(a - b) # 集合a中包含而集合b中不包含的元素
#输出
{'d', 'b', 'r'}
print(a | b) # 集合a或b中包含的所有元素
#输出
{'c', 'b', 'r', 'z', 'l', 'm', 'a', 'd'}
print(a & b) # 集合a和b中都包含了的元素
#输出
{'a', 'c'}
print(a ^ b) # 不同时包含于a和b的元素
#输出
{'l', 'b', 'z', 'r', 'm', 'd'}