Python学习(二)基础语法

一、学习网站

廖雪峰 Python入门 慕课网:点击打开

二、基础知识

1、创建list

python内置数据类型:列表 list , list 是一种有序的集合,可以随时添加和删除其中的元素。
list的元素是按照顺序排列的。
创建list,直接通过 [ ] 创建 。

1
Leo = ["name","age","address"]

由于python是动态语言,所以不要求list里面必须是统一类型数据,比如:

1
Leo = [ "name" ,15,True]

一个元素也没有的list,就是空list

1
Leo = []

2、查询list

a、顺序访问list

从第一个开始访问,索引从0开始,即:

1
2
3
4
Leo = ["shuai","niu","bang"]
Leo[0] # "shuai"
Leo[1] # "niu"
Leo[2] # "bang

b、倒序访问list

从最后一个开始访问,即:

1
2
3
4
Leo = ["shuai","niu","bang"]
Leo[-1] # "bang"
Leo[-2] # "niu"
Leo[-3] # "shuai"

3、添加新元素list

** a、append()方法添加:**
append()方法总是添加到 list 尾部

1
2
Leo = ["ni","hao","haha"]
Leo.append("wo shi leo") # ["ni","hao","haha","wo shi leo"]

** b、insert()方法添加:**
接收两个参数,第一个是索引号,第二个是待添加的新元素:

1
2
Leo = ["ni","hao","a"];
Leo.insert(0,"enen"); # ["enen","ni","hao","a"]

4、删除list元素

** a、pop() 删除最后一个,并返回这个元素 **

1
2
Leo = ["ni","hao","a"];
Leo.pop(); # "a"

** b、pop(index) 删除index索引的元素,并返回这个元素 **

1
2
Leo = ["ni","hao","a"];
Leo.pop(2); # "hao"

5、替换元素

1
2
3
Leo = ["shuai","niu","bang"];
Leo[1] = "haha" ; # ["shuai","haha","bang"]
Leo[-1] = "heihei"; # ["shuai","haha","heihei"]

6、创建多元素的tuple

另一种有序列表,称为“元组”tuplelist 非常相似,但是 tuple 一但创建就不能修改。

1
Leo =( "ni" , "hao" , "a" );

这里的Leo就不能改变,并且tuple没有 append()insert()pop() 方法,不能增删tuple。
获取里面元素的值方法还是一样:

1
2
Leo =( "ni" , "hao" , "a" );
Leo[0] ; # "ni"

7、创建单元素的tuple

包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示:

1
2
3
t = ();    # print t 结果 ()
g = (1); # print g 结果 1 ,这时候的()是被当做运算的括号,优先计算,即结果1
h = (1,); # print h 结果 (1,) 结果正确 , 为了避免歧义,所以需要添加一个逗号,多元素的tuple就不用添加

8、“可变的”tuple

即在tuple里面有list:

1
2
3
4
t = ("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
5
age = 20
if age >= 18:
print "your age is", age
print "adult"
print "END"

python缩进:4个空格不用tab更不要混合用tab和空格,否则容易引起语法错误。
注意: if 语句后接表达式,然后用: 表示代码块开始。
if…else…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if age >= 18:
print "adult"
else:
print "teenager"
````
if...elif...else (就是else if的意思)
```python
if age >= 18:
print "adult"
elif age >= 6:
print "teenager"
elif age >= 3:
print "kid"
else:
print "baby"

特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。

10、for循环

1
2
3
L = ["Adam", "Lisa", "Bart"]
for name in L:
print name

嵌套for循环

1
2
3
for x in ["A", "B", "C"]:
for y in ["1", "2", "3"]:
print x + y

11、while循环

1
2
3
4
5
N = 10
x = 0
while x < N:
print x
x = x + 1

while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。

12、break退出循环

1
2
3
4
5
6
7
8
sum = 0
x = 1
while True:
sum = sum + x
x = x + 1
if x > 100:
break
print sum

13、continue继续循环

1
2
3
4
5
for x in L:
if x < 60:
continue
sum = sum + x
n = n + 1

14、dict

用dict标识“键”-“值”(key-value),可以通过key查到value

1
2
3
4
5
6
d = {
"Adam": 95,
"Lisa": 85,
"Bart": 59
}
len(d) # 3 len()函数可以计算任意集合的大小,一个key-value算一个

访问dict 使用d[key]查询

1
2
3
4
5
6
7
print 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 的映射关系,dictkey 是不能重复的。
当我们只关系dictkey而不关心对应value时,set就派上用场。
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
** 1、创建set **
创建 set 的方式是调用 set() 并传入一个 listlist的元素将作为set的元素:

1
2
3
s = set(["a","b","c"])
print s # set(["a","c","b"])
# 打印顺序和原始list可能会不同,因为set内部是无序的。

set不能包含重复的元素,不然会被自动去掉重复,常用在去重:

1
2
3
s = set(["A", "B", "C", "C"])
print s # set(["a","c","b"])
len(s) # 3

** 2、访问set **

1
2
3
s = set(["A", "B", "C", "D"])
# 判断一个元素是否在set中 in操作符(严格区分大小写)
"C" in s # true

** 3、set特点 **

set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dictkey类似,必须是不变对象,因此,任何可变对象是不能放入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
3
s = set([1, 2, 3])
s.add(4) # set([1, 2, 3, 4])
# 若已存在,不会保持,但不会添加

删除元素 remove():

1
2
3
s = set([1, 2, 3, 4])
s.remove(4) # set([1, 2, 3])
# 若不存在,则报错

所以用add()可以直接添加,而remove()前需要判断。