一个:列表应该是长成这个样子的list_name = [item1,item2,item3]
一个元组的样式应该是这样的:tuple_name = (item1,item2,item3)
两者区别:列表可以更改其中的内容,但是元组一旦被声明了是不能改变的。
2. 字典初步如果有其他语言背景的同学肯定知道关联数组或者哈希表。在python中他们是以“字典”的形式存在的,表现形式是: 键—值 (key—value)
在生活中我们会发现很多数据是“键-值”来组织的。比如一个家庭结构中:
父亲:李龙
母亲:刘女神
哥哥:李虎
弟弟:李豹
姐姐:李曼曼
下面我们来实际操作一下:
family = {‘father’:’dragon lee’, ’mother’:’liu’, ’brother1’:’tiger lee’, ’brother2’:’leopard lee’, ’sister’:’manman lee’}
print family
这里有几点需要强调:几乎所有类型的对象都可以作为“键”,不过一般还是以数字或者字符串最为常用;所有类型的对象都可以作为“值”,甚至是一个列表,每个“键—值”的搭配都是用逗号“,”来隔开。字典要用“{}”花括号来包裹。
3.判断初步if-else 示例:
num = raw_input("please enter a number : ")
num = int(num)
if num <= 0:
print "the number is below 0"
else:
print "the number is over 0"
4. while循环while 条件:
执行语句(如果条件满足的情况下)
示例:
counter = 0
while counter <3:
print counter counter += 1
5.循环语句之 forpython中的for 循环与传统的(计数器)循环不太一样。如果你之前接触过shell脚本的foreach迭代,每次迭代其中的一个元素。
示例:
items = [1,2,3,4,5]
for item in items:
print item
备注:想在一行输入 不换行则可以:print item, 加上逗号,因为print默认给每一行加一个换行符
6.range() 函数range()函数会生成一个数字列表,具体列表依据传入的参数不同而定。
比如:range(n) 会生成一个0,1,2,3,4…n-1 的列表
range(m,n) 会生成一个m,m+1,m+2,…n-1 的列表
range(m,n,k) 会生成一个m,m+k,m+2k,…n-1的列表
7.函数示例:
def showMyName(name):
print name
说明:让我们来分析下,关键字”def”是告诉解释器:我要写一个函数了 ! “showMyName”就是这个函数的名字,这个函数需要传入一个变量才能工作,这个变量的名字叫:name。别忘记要在末尾加一个”:“,他是告诉解释器,后面的这些内容是这个函数体内部的内容。具体是哪些内容呢?一般其他的语言会直接把它们放在一对“{}”中,在python中,我们不用花括号,我们用代码的缩进来展现一个程序内部的内容。
调用:
showMyName("jack wang")
打印结果:jack wang
8.python对象python使用对象类型来存储数据,任何类型都是一个对象。 python 的对象都拥有三个特性:名字、类型、值,如同一个人。
“名字”是它的唯一的身份来标识自己,所以这个名字应该在“一定范围内”具有唯一性。
“类型”决定了这个对象可以保存什么样类型的值,可以进行什么样的操作。
“值”表示了对象的数据项。
举个例子: i = 10
这里就声明了一个对象,它的名字叫i,是一个int(整数),它的值是10。在声明一个对象的时候,我们使用等号(=)。值得注意的是:在这里并没有显式地写出它是一个int(整数),当你给他赋值的时候,计算机会自动识别出来它是一个int。
9.变量对象(变量)的名字不是可以随便起的,它可以由字符、数字、下划线(_)组成。但是,它不能用数字作为开头,不能有空格。
示例:
数字: 1234
字符串:"apam" ‘god‘
表: [1,[1,2],”name”]
元组: (1,(1,2),”name”)
字典: {”food”:”bean”,”drink”:”cocacola”}
文件: myFile = open(‘xxx.txt’,’r’)
其他类型:None, Boolean 等等。
10.数字python 同时支持8进制和16进制的数字。
8进制(以数字0开头): num2 = 017
16进制(以“0x”开头): num3 =0x92
下面来看看长整型(就是很大很大的整数),
需要注意的是:python中的长整型与c或其他编译语言中的长整型不同,它不需要范围是32位或者是64位。python的长整型长度至于你机器支持的(虚拟)内存的大小有关。换句话说,它可以表达很大很大的数值。那么怎么表示一个长整型呢,在后面加一个小写的“l”就可以了。
例如:num = 123456789012345678901234567890l (想要多长就多长)
11.复杂的运算在python中当我们要表达乘方的意思的时候使用** 例如 3**3=27
示例:
import math
print math.pi
print math.sqrt(64)
12.字符串A.一致性原则:在表示一个完整的字符串的时候,在字符串的两头,要么全是双引号,要么全是单引号就可以。
B.复杂的一种情况是:如果字符串中本来就带有符号呢?
一种解决方法是:用双引号来包裹整个字符串。如:print "what‘s your name?"
一种更好的方法,隆重推出反斜杆符号“\”:我们通过反斜杠符号来告诉计算机,这里的引号不是用来标记字符串,而是字符串本身的字符之 一。如:print "what\‘s your name?"
C.如果字符串太长我想分几行来写怎么办? 用三引号(""")
如:
text = """Hello, what is your name?
My name is hanmeimei
And you?
My name is lilei"""
print text
D.还有一个问题,如果想要打印出一个字符串的某个字符应该怎么做呢?
#打印第三个字符
str = "python"
print str[2]
E.字符串相关有用的函数
Find()函数是一个基本的查找操作,它返回传入参数的首位的位置。
如:str = “mengma.com”
print str.find(“ng”)
结果:2
replace()函数会对字符串进行搜索,然后替换掉符合要求的字符。
如:print str.replace(“ma”,”ba”)
结果: ‘mengba.com’
split()函数可以依照传入的参数将字符串进行拆分,
如:s = ‘www.mengma.com.cn’
print s.split(‘.’)
结果:[‘www’,’mengma’,’com’,’cn’]
13.内建函数内建函数:绝大多数函数是我们自己写的,但是日常工作中有一些函数实现的功能是非常基本的,并且大家对结果的要求都一致,这些函数就预先被写好允许大家进行直接的调用,我们称之为“内建函数”。
如:
type(23)
print int("32")
print int(3.13)
14.数学函数我们首先用Import引入了模块:math。然后就通过“.”来直接调用math中的函数以及变量了。可以看到,通过math中内置好的函数,我们可以完成很多科学计算,而根本不用重写这些复杂的函数。
如:
import math
print math.sqrt(4)
print math.pi
print math.sin(30)
15.函数的组合 可以看到结果,试想如果我们把这些都写在playSong这个函数里,这个函数该有多么复杂!更为重要的是,我们在这里做了一个解耦的工作,当第一句歌词需要修改的时候,我们只需要在printLyrics1中修改即可,改正的结果就可以反映在其他调用它的函数中。也许你现在还感受不到,因为例子中只有一个函数调用了printLyrics1,当有很多函数都在调用它的时候,优势就会非常明显:一次修改,处处适用。
示例:
def printLyrics1():
print "what I got to do to make you love me "
print "what I got to do to make you care"
def printLyrics2():
print "what can I do when lighting strikes me"
print "and wake to find you not there"
def playSong():
printLyrics1()
printLyrics2()
print "it‘s sad,so sad,it‘s sad sad situation"
playSong()
16.函数变量的适用域在编写函数的过程中,我们可能根据需要在函数内部声明一些变量。这些变量的寿命非常短,函数在使用它们的时候非常残忍,“狡兔死,走狗烹”,用完就毁灭它们是这些变量的命运。然而在外部本来就存在的变量不会遭此厄运。
示例:
dog = “wangwang ”
cat = “mimi ”
def friends(dog,cat):
animal = dog + “ ” + cat
print animal,”are friends!”
friends(dog,cat)
print dog
print cat
print animal
运行一下,可以看到。在函数运行后,在函数外本来就存在的dog, cat依然存在。但是在函数内部产生的变量:animal,虽然在函数运行的时候产生并存在,当函数执行完之后就死亡了。解释器会产生:name ‘animal’ is not definded。这样的错误。
这样的设定并不意味着残忍,而是一般在函数运行中产生的变量,一般只会在函数内部产生作用。如果让它一直存在下去,会是对资源极大的浪费。如果在函数之外你会多次用到animal这个变量,正确的做法是:把animal = dog + cat从函数中提出来,放在更“广阔”的域中。
17. 列表为了更好的组织数据,我们让一个电影列表长成这个样子:
movies = [“Avata”,”Titannic”,” The Dark Knight Rises”,” Jurassic Park”,” Dances with Wolves”]
year = [2009,1997,2012,1997,1990]
directors = [“James Cameron”,” James Cameron”,” Christopher Nolan”,” Steven Spielberg”,” Kevin Costner”]
可以看到,pyhon列表的可读性是非常好的。列表在外貌上有以下的特点:
列表的开始和结束要加上中括号
采用逗号将列表的项与项分开
使用“=”号操作符将整个列表赋予一个变量
列表中可以放置任意的数据类型,如果是字符串,需要打上引号(还记得吗?单引号、双引号都可以)
18. 取列表中的值和数组一样,列表的第一个元素的索引是从0开始的。也就是说第一个元素的序号是0,第二个元素是1,第三个元素是2。但是你可能还不知道的是:它还可以倒着来数,最后一个的序号是-1,倒数第二的序号是-2。
movies = [“Avata”,”Titannic”,” The Dark Knight Rises”,” Jurassic Park”,” Dances with Wolves”]
有了序号,我们来看看怎样来访问列表中的元素呢。Python采用中括号”[ ]”标记法来取出元素,中括号里是该元素的序号。
print movies[0]
print movies[-1]
示例:对于moives列表,如果我想访问列表中最后一个元素(Dances with Wolves)的第一个元素(D)怎么做呢?
movies = ["Avata", "Titannic", "The Dark Knight Rises", "Jurassic Park", "Dances with Wolves"]
print movies[-1][0]
19.切片
Python中采用”:”来切片内容,”:”前后是需要切片的元素。
这里大家需要特别注意的是:切片操作的两端意义并不相同,如果用数学符号来表示,那就是”[ )”的关系。或者简单的说[A :B]表达的是:从A开始(包括A)到B之前(不包括B)的内容。 -------------口诀:左闭合右开启 或 左>= 右<
如:访问第2个和第3个元素,正确的语法应该是:print movies[1:3]
print movies[:2] 截取第三个元素之前(不包括第3个元素)的所有元素
print movies[1:] 截取第二个元素之后(包括第2个元素在内)的所有元素
20.什么都可以扔进去 列表是序列式的数据类型,可以通过下标来访问列表中的某一个元素或者一些元素。它可以保存任何数目,任意对象类型的非常灵活的容器。
示例:
avatar = ["Avatar", 2009, "James Cameron"]
titannic = ["Titannic",1997, "James Cameron"]
theDarkKnightRises = ["The Dark Knight Rises",2012,"Christopher Nolan"]
jurassicPark = ["Jurassic Park",1997, "Steven Spielberg"]
dancesWithWolves = ["Dances with Wolves",1990,"Kevin Costner"]
print [avatar,titannic,theDarkKnightRises,jurassicPark,dancesWithWolves]
结果:
终端:[[‘Avatar‘, 2009, ‘James Cameron‘], [‘Titannic‘, 1997, ‘James Cameron‘], [‘The Dark Knight Rises‘, 2012, ‘Christopher Nolan‘], [‘Jurassic Park‘, 1997, ‘Steven Spielberg‘], [‘Dances with Wolves‘, 1990, ‘Kevin Costner‘]]
#####列表操作
1.增(append()、extend()、insert())
A.任何数据的容器都离不开四个操作:增、减、改、删。这些操作都是通过Python中自带的内建函数来实现的。在列表加入一个元素,使用到了内建函数append()
如:
movies = ["Avata", "Titannic", "The Dark Knight Rises", "Jurassic Park", "Dances with Wolves"]
movies.append("Story")
print movies
运行结果:
[‘Avata‘, ‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘, ‘Story‘]
B.如果添加的不是一个元素,而是一个元素集合,比如一个列表呢?我们采用extend()内建函数来在一个列表的末尾添加一个元素集合。
如:
movies=["Avata","Titannic","The Dark Knight Rises","Jurassic Park","Dances with Wolves"]
movies.append("jack chen is chenglong")
otherMovies = ["King Kong","King Kong"]
movies.extend(otherMovies)
print movies
结果:[‘Avata‘, ‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘, ‘jack chen is chenglong‘, ‘King Kong‘, ‘King Kong‘]
C.同样新的列表也是自动被加到了原列表的末尾。当然,我们不仅满足于此,还想把一个元素添加在其他位置,尤其是中间的某个位置怎么办呢?我们使用内建的insert()函数。
Insert函数需要两个参数,一个是将要插入元素的位置,一个是即将插入元素的内容。新元素插入后,原来位置上以及之后的元素就顺移一个位置。比如我们要在movies列表中插入”Xman”,插入的位置是第二个。
movies = ["Avata", "Titannic", "The Dark Knight Rises", "Jurassic Park", "Dances with Wolves"]
movies.insert(1,"李天霸")
print movies
print movies[1]
print movies[1:]
结果:
[‘Avata‘, ‘李天霸‘, ‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘]
李天霸
[‘李天霸‘, ‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘]
注意:插入元素的位置与序号之间关系,是从0开始的。
2.减(del、remove)删除列表中的元素,我们有两把刀,一把叫”del(delete的缩写)命令”,一把叫”remove函数”
A.使用del命令时候,我们需要传入被删元素的序号。这里我要删除第3个:del movies[2] 或:del movies
B.若想删除一个元素,却不知道它的序号,但是知道它的内容是什么,用remove函数,remove函数需要传入明确的参数内容,而不是序号。它会首先根据内容找到这个元素,然后删掉它。movies.remove(“Jurassic Park”)
3. 改如果想修改一个列表中元素的值,直接给它再次赋值就可以了。
如:
movies[0] = “hero”
print movies[0]
print movies
综合联系:
avatar = ["Avatar", 2009, "James Cameron"]
titannic = ["Titannic",1997, "James Cameron"]
theDarkKnightRises = ["The Dark Knight Rises",2012,"Christopher Nolan"]
jurassicPark = ["Jurassic Park",1997, "Steven Spielberg"]
dancesWithWolves = ["Dances with Wolves",1990,"Kevin Costner"]
#生成一个只有电影名称的列表
movies=[]
movies.append(avatar[0])
movies.append(titannic[0])
movies.append(theDarkKnightRises[0])
movies.append(jurassicPark[0])
movies.append(dancesWithWolves[0])
print movies
#删掉"avata"
del movies[0]
print movies
#把"hero"添加在列表的首位。
movies[0]="hero"
print movies
终端:[‘Avatar‘, ‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘]
[‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘]
[‘hero‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘]
4. 列表操作符 1.再来介绍两个列表的操作符 + 和 *
“+”就是所谓的连接操作符,通过它我们可以将两个或者多个列表和在一起。下面我们就把这两个列表连起来。
"*"被称为重复操作符,它可以将列表的内容复制相应的倍数。
list1 = [1,2,3]
list2 = ["a","b","c"]
list3=list1+list2 ##也可用list1.extend(list2)
print list3
list2=list2*3
print list2,
终端:[1, 2, 3, ‘a‘, ‘b‘, ‘c‘]
[‘a‘, ‘b‘, ‘c‘, ‘a‘, ‘b‘, ‘c‘, ‘a‘, ‘b‘, ‘c‘]
示例2:
a = “@”
h = “1”
h *= 3
print a,h,a
终端:
5. 迭代一个列表
在python中采用for循环来迭代列表是大家首先会选择的方法:
示例:
movies = ["A","B","C","D"]
for movie in movies:
print movie
终端输出:A B C D
注意:大家可以发现:使用for循环的优点之一是你根本不用考虑列表的大小,for循环适用于任意大小的列表,你不需要先计算出来列表的大小,然后从第0个开始迭代。同时它的可读性非常好。
6.列表解析
图中显示了for循环的一种更加简洁的表达方式。
示例:
movies = ["Avata", "Titannic", "The Dark Knight Rises", "Jurassic Park", "Dances with Wolves"]
movie=[movie for movie in movies]
print movie
输出:
[‘Avata‘, ‘Titannic‘, ‘The Dark Knight Rises‘, ‘Jurassic Park‘, ‘Dances with Wolves‘]
备注:列表解析分为两个部分,第一个部分是”movie”,他代表了列表中的每一个元素的抽象;第二个部分是控制描述语句,这里的”for movie in movies”,如此就遍历了items中的所有的元素,这与for循环中的遍历是一样的。
示例2:
for写法:
for movie in movies:
for letter in movie[0]:
print letter
列表解析写法:print [letter for movie in movies for letter in movie[0]]
输出:[‘A‘, ‘T‘, ‘T‘, ‘J‘, ‘D‘]