1.print语句
例:Bob said "I'm OK".
用/转义"或者用r'''内容'''输出
print "Bob said \"I'm OK\"."
或
print r'''Bob said "I'm OK".'''
2.list数据类型
list是一种有序的集合,可以随时添加和删除其中的元素。由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型。
L = ['Adam', 95.5, 'Lisa',85, 'Bart', 59]
#按照索引访问
print L[0]#Adam
#倒序访问
print L[-1]#59
#插入元素
L.append('Mike')#插入尾部
L.insert(2,'Paul')#插入索引位置的元素
print L#['Adam', 95.5, 'Paul', 'Lisa', 85, 'Bart', 59, 'Mike']
#删除元素
L.pop()#删除尾部
L.pop(2)#删除索引位置的元素
print L#['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
#替换元素
L[2]='Paul'
print L#['Adam', 95.5, 'Paul', 85, 'Bart', 59]
3.tuple数据类型
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。
Note:用()定义单元素tuple有歧义,所以后面加一个逗号,例如t=(1,)。
t = ('a', 'b', ['A', 'B'])
print t
t[2].append('C')#通过改变list"改变"tuple
print t
'''
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改
成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
output :
('a', 'b', ['A', 'B'])
('a', 'b', ['A', 'B', 'C'])
'''
4.dict数据类型
在dict数据类型中,给定key可以找到对应的val。
特点:
1、查找速度快但是占用内存大,和list相反。
2、存储的key-val序对是没有顺序的,打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
3、为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
print d#{'Lisa': 85, 'Adam': 95, 'Bart': 59}无序
#访问dict(两种方式)
print d['Adam']#95
print d.get('Lisa')#85
#更新dict
d['Paul']=72#加入
d['Bart']=60#改变数值
print d#{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 60}
#遍历dict
for key in d:
print key,':',d[key]
'''
Lisa : 85
Paul : 72
Adam : 95
Bart : 60
'''
5.set数据类型
特点:无序、判断一个元素是否在set中速度很快、set存储的元素和dict的key类似,必须是不变对象。
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
print s#set([('Lisa', 85), ('Adam', 95), ('Bart', 59)])
#访问set(只能判断一个元素是否在set中)
print ('Adam', 95) in s#True
#遍历set
for x in s:
print x[0],':',x[1]
'''
Lisa : 85
Adam : 95
Bart : 59
'''
6.定义可变参数
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数,可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。
def average(*arg):#求平均值
if len(arg)==0:
print 0.0
else:
sum=0.0
for x in arg:
sum+=x
print sum/len(arg)
average()
average(1, 2)
average(1, 2, 2, 3, 4)
'''
0.0
1.5
2.4
'''
7.切片
对经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
######list切片######
L=range(1,21)
print L
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
#前五个元素
print L[:10]
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#3的倍数
print L[2::3]#从索引为2的数(3)开始到末尾,每三个打印一个
#[3, 6, 9, 12, 15, 18]
#前五个中3的倍数
print L[2:10:3]#从索引为2的数(3)开始到索引为10(不包括索引为5的数),每三个打印一个
#[3, 6, 9]
#最后3个3的倍数
print L[2::3]#L[2::3]为一个新的list
print L[2::3][-3:]#新的list的倒数三个
#[3, 6, 9, 12, 15, 18]
#[12, 15, 18]
######字符串切片######
#字符串开头大写
def up(s):
return s[:1].upper()+s[1:]
print 'september'.upper()
print up('september')
#SEPTEMBER
#September
8.迭代
在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。
#索引迭代:取出索引和元素
#法一:enumerate()函数可把list每一个元素转换成(index,name)的tuple
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index,name in enumerate(L):
print index,'-',name
#法二:zip()函数可把两个list变成一个list
for index,name in zip(range(0,len(L)),L):
print index,'-',name
'''
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
'''
#迭代dict的val
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
for v in d.itervalues():#用d.values()也可,但values()要通过将d内的values生成list,更加耗内存
print v
# 85 74 95 59 无序
#迭代dict的val
for i,v in d.iteritems():#用d.values()也可,但items()要通过将d内的(index,value)生成list,更加耗内存
print i,':',v
'''
Lisa : 85
Paul : 74
Adam : 95
Bart : 59
'''
9.多层表达式
for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。
print [m+n for m in 'ABC' for n in '123']
#['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']