Python学习(二)基础语法
一、学习网站
廖雪峰 Python入门 慕课网:点击打开
二、基础知识
1、创建list
python内置数据类型:列表
list
,list
是一种有序的集合,可以随时添加和删除其中的元素。list
的元素是按照顺序排列的。
创建list,直接通过[ ]
创建 。
1 Leo = ["name","age","address"]
由于python是动态语言
,所以不要求list里面必须是统一类型数据,比如:1
Leo = [ "name" ,15,True]
一个元素也没有的list,就是空list1
Leo = []
2、查询list
a、顺序访问list
从第一个开始访问,索引从0
开始,即:1
2
3
4Leo = ["shuai","niu","bang"]
Leo[0] # "shuai"
Leo[1] # "niu"
Leo[2] # "bang
b、倒序访问list
从最后一个开始访问,即:1
2
3
4Leo = ["shuai","niu","bang"]
Leo[-1] # "bang"
Leo[-2] # "niu"
Leo[-3] # "shuai"
3、添加新元素list
a、append()方法添加:append()
方法总是添加到 list
尾部1
2Leo = ["ni","hao","haha"]
Leo.append("wo shi leo") # ["ni","hao","haha","wo shi leo"]
b、insert()方法添加:
接收两个参数,第一个是索引号,第二个是待添加的新元素:1
2Leo = ["ni","hao","a"];
Leo.insert(0,"enen"); # ["enen","ni","hao","a"]
4、删除list元素
a、pop()
删除最后一个,并返回这个元素 1
2Leo = ["ni","hao","a"];
Leo.pop(); # "a"
b、pop(index)
删除index索引的元素,并返回这个元素 1
2Leo = ["ni","hao","a"];
Leo.pop(2); # "hao"
5、替换元素
1 | Leo = ["shuai","niu","bang"]; |
6、创建多元素的tuple
另一种有序列表,称为“元组”
, tuple
和 list
非常相似,但是 tuple
一但创建就不能修改。1
Leo =( "ni" , "hao" , "a" );
这里的Leo就不能改变,并且tuple没有 append()
, insert()
和 pop()
方法,不能增删tuple。
获取里面元素的值方法还是一样:1
2Leo =( "ni" , "hao" , "a" );
Leo[0] ; # "ni"
7、创建单元素的tuple
包含 0
个元素的 tuple,也就是空tuple,直接用 ()
表示:1
2
3t = (); # print t 结果 ()
g = (1); # print g 结果 1 ,这时候的()是被当做运算的括号,优先计算,即结果1
h = (1,); # print h 结果 (1,) 结果正确 , 为了避免歧义,所以需要添加一个逗号,多元素的tuple就不用添加
8、“可变的”tuple
即在tuple里面有list:1
2
3
4t = ("a", "b", ["A", "B"])
L = t(2)
L[0] = "X";
L[1] = "Y"; # list 作为tuple的第3个元素。
9、if语句
注意:python代码的缩进规则,相同缩进的代码视为代码块,如果if语句判断true
则执行代码块:1
2
3
4
5age = 20
if age >= 18:
print "your age is", age
print "adult"
print "END"
python缩进:4个空格
,不用tab
,更不要混合用tab和空格
,否则容易引起语法错误。
注意: if 语句后接表达式,然后用: 表示代码块开始。
if…else…1
2
3
4
5if age >= 18:
print "adult"
else:
print "teenager"
`
if…elif…else (就是else if的意思)1
2
3
4
5
6
7
8if age >= 18:
print "adult"
elif age >= 6:
print "teenager"
elif age >= 3:
print "kid"
else:
print "baby"
特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
10、for循环
1 | L = ["Adam", "Lisa", "Bart"] |
嵌套for循环
1
2
3 for x in ["A", "B", "C"]:
for y in ["1", "2", "3"]:
print x + y
11、while循环
1 | N = 10 |
while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。
12、break退出循环
1 | sum = 0 |
13、continue继续循环
1 | for x in L: |
14、dict
用dict标识“键”-“值”(key-value)
,可以通过key
查到value
1
2
3
4
5
6d = {
"Adam": 95,
"Lisa": 85,
"Bart": 59
}
len(d) # 3 len()函数可以计算任意集合的大小,一个key-value算一个
访问dict 使用d[key]
查询1
2
3
4
5
6
7print d["Lisa"] # 85
# 判断key是否存在
# 方法一: in 操作符
if "Palu" in d:
print d["Paul"]
# 方法二: get 方法 这是dict本身自带的,在key不存在时返回None
print d.get("Paul")
15、dict特点:
第一个特点:
查找速度快,无论是10个元素还是10万个元素,查找速度一样快。
缺点就是占用内存大,会浪费很多内容。
而list则相反,占用内存少,但查找速度会随着元素增多而减慢。
第二个特点:存储的key-value
序列没有顺序。
第三个特点:作为key的元素不可变
16、更新dict
如果这个key不存在,则创建新key-value,如果存在,则更新替换原有数据。1
d["Paul"] = 72
18、set
dict的作用是建立一组
key
和一组value
的映射关系,dict
的key
是不能重复的。
当我们只关系dict
的key
而不关心对应value
时,set
就派上用场。set
持有一系列元素,这一点和list
很像,但是set
的元素没有重复,而且是无序的,这点和 dict 的 key很像。
1、创建set
创建set
的方式是调用set()
并传入一个list
,list
的元素将作为set
的元素:
1
2
3 s = set(["a","b","c"])
print s # set(["a","c","b"])
# 打印顺序和原始list可能会不同,因为set内部是无序的。
set不能包含重复的元素,不然会被自动去掉重复,常用在去重:1
2
3s = set(["A", "B", "C", "C"])
print s # set(["a","c","b"])
len(s) # 3
2、访问set 1
2
3s = set(["A", "B", "C", "D"])
# 判断一个元素是否在set中 in操作符(严格区分大小写)
"C" in s # true
3、set特点
set
的内部结构和dict
很像,唯一区别是不存储value
,因此,判断一个元素是否在set
中速度很快。set
存储的元素和dict
的key
类似,必须是不变对象,因此,任何可变对象是不能放入set
中的。
最后,set
存储的元素也是没有顺序的。
1
2
3
4
5
6
7 # 判断一个字符串是否存在list里
weekdays = set(["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"])
x = "TUE" # 用户输入的字符串
if x in weekdays:
print "input ok"
else:
print "input error"
4、遍历set
使用for循环1
2
3
4
5
6
7
8# 案例1
s = set(["Adam", "Lisa", "Bart"])
for name in s:
print name # "Adam" "Lisa" "Bart"
# 案例2
s = set([("Adam", 95), ("Lisa", 85), ("Bart", 59)])
for x in s:
print x[0],":",x[1]
5、更新set
添加元素 add():1
2
3s = set([1, 2, 3])
s.add(4) # set([1, 2, 3, 4])
# 若已存在,不会保持,但不会添加
删除元素 remove():1
2
3s = set([1, 2, 3, 4])
s.remove(4) # set([1, 2, 3])
# 若不存在,则报错
所以用add()可以直接添加,而remove()前需要判断。