1. List(列表)和tuple(元组)的区别:
(1) list可以随时添加和删除其中的元素
(2) tuple是不可变的,从一开始就确定了
(3) list使用方括号“[]”,tuple使用圆括号“()”
(4) list有(先后)次序,tuple有(逻辑)结构
#list#
#list里面可以有list
Q = ['a','b','c',
['A','B','C'],
['ONE','TWO','THERE']
]
W = ['yi','er','san']
1) 用len()函数可以获得list元素的个数
print(len(Q))
5
2) 用索引来访问list中每一个位置的元素,记得索引是从0开始的
print(Q[1])
b
3) 可以用-1做索引,直接获取最后一个元素
print(Q[-1])
['ONE', 'TWO', 'THERE']
4) 在末尾追加元素,如果是一个list,直接整个添加,用append()方法
Q.append(['d','k'])
print(Q)
['a', 'b', 'c', ['A', 'B', 'C'], ['ONE', 'TWO', 'THERE'], ['d', 'k']]
5) 将一个列表中每个元素分别添加到另一个列表中,用extend()方法(只在末尾添加list中的元素,不添加list)
Q.extend(['e','f','g'])
print(Q)
['a', 'b', 'c', ['A', 'B', 'C'], ['ONE', 'TWO', 'THERE'], 'e', 'f', 'g']
6) 把元素插入到指定的位置,用insert(i,' ')方法,其中i是索引位置
Q.insert(3,'D')
print(Q)
['a', 'b', 'c', 'D', ['A', 'B', 'C'], ['ONE', 'TWO', 'THERE']]
7) 要删除list末尾的元素,用pop()方法
Q.pop(0)
print(Q)
['b', 'c', ['A', 'B', 'C'], ['ONE', 'TWO', 'THERE']]
8) 要删除指定位置的元素,用pop(i)方法,其中i是索引位置
Q.pop(2)
print(Q)
['a', 'b', ['A', 'B', 'C'], ['ONE', 'TWO', 'THERE']]
9) 某个元素替换成别的元素,直接 = 赋值
Q[2]= 'cc'
print(Q)
['a', 'b', 'cc', ['A', 'B', 'C'], ['ONE', 'TWO', 'THERE']]
10) + 加号,将两个list相加,会返回到一个新的list对象,注意与前三种的区别。前面三种方法(append, extend, insert)可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象。 注意:将两个list相加,需要创建新的list对象,从而需要消耗额外的内存,特别是当list较大时,尽量不要使用“+”来添加list,而应该尽可能使用List的append()方法。
#tuple#
1)tuple中元素不可修改,但是里面的list中元素可以重新赋值
T = ('a','b',['A','B'])
T[2][0] = 'X'
T[2][1] = 'Y'
print(T)
('a', 'b', ['X', 'Y'])
2)tuple中只有1个元素时必须加一个逗号,,来消除歧义,以免
t = (1,)
print(t)
1
2. 条件判断,用if语句实现
age = input('age:')
age =int(age)
if age >= 18:
print('成年')
elif age >= 6:
print('少年')
else:
print('儿童')
age:13
少年
(1) 注意不要少写了冒号:
(2) elif是else if的缩写,完全可以有多个elif
(3) if语句是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else
(4) input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数
(5) if语句判断的时候,都是判断的真或者假 也就是True和False
(6) 非0即真,非空即真;
这个是因为0是string类型,所以输入0被认定为非空
3. for循环
(1) for ...in ...循环就是把每个元素代入in前面的变量,然后执行缩进块的语句。
可以逐个输出字符串中的字符,逐个输出列表中的元素,元组中的元素,集合中的元素(注意赋值时各元素的顺序),字典中的键
fruits=['西瓜','葡萄','苹果','香蕉']
for fruit in fruits:
print(fruit)
西瓜
葡萄
苹果
(2) 重复执行相同操作
使用range()函数创建一个数字列表,取值范围:从起始数字开始到结束数字之前
语法:
range(stop)
range(start, stop[, step])
range函数是一个用来创建算数级数序列的通用函数,返回一个[start, start + step, start + 2 * step, ...]结构的整
数序列;range函数具有一些特性:
1.如果step参数缺省,默认1;如果start参数缺省,默认0。
2.如果step是正整数,则最后一个元素(start + i * step)小于stop。
3.如果step是负整数,则最后一个元素(start + i * step)大于stop。
4.step参数必须是非零整数,否则抛出VauleError异常。
print(list(range(1,10,1)))
print(list(range(1,10,2)))
print(list(range(0,-10,-1)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
注意:range函数返回一个左闭右开([left,right))的序列数
#range函数通常结合for循环一起使用
for q in range(9):
print(q)
0
1
2
3
4
5
6
7
8
(3) 嵌套for循环:取外循环的数据,依次进行内循环操作
从第一个list 里面取一个 然后去下面的lis里面全部循环一遍
然后再取第一个list 里面的第二个值
#打印实心正方形
for i in range(5):
for o in range(4):
print(' * ',end='')
print(' * ')
>> * * * * *
* * * * *
* * * * *
* * * * *
* * * * *
4. while循环
(1) 只要条件满足,重复执行相同操作,条件不符合,退出循环
语法:while 循环条件:
循环操作
n = 1
while n <=100:
print(n)
n = n + 1
print('END') #在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。
>>1
2
...
100
END
(2) 嵌套while循环:
外部循环满足条件后,执行代码开始执行内部循环,等内部循环全部执行完毕,如果还满足外部循环条件,则外部循环再次执行,依次类推,直到跳出外层循环。
#站起来,坐下,站起来,转5个圈,坐下。整个流程执行10次
Process1 = 1
while Process1 <= 10: # 这个Process1 代表外面大的while循环
print("="*5)
print("第%d次执行"%Process1)
print("站起来")
print("坐下")
print("站起来")
Process2 = 1 #把内层循环的变量赋值放在外层循环里面
while Process2 <= 5: # 这个Process2 代表嵌套在里面的while小循环
print("转%d个圈"%Process2)
Process2 = Process2 + 1
print("坐下")
Process1 = Process1 + 1
=====
第1次执行
站起来
坐下
站起来
转1个圈
转2个圈
转3个圈
转4个圈
转5个圈
坐下
=====
......
=====
第10次执行
站起来
坐下
站起来
转1个圈
转2个圈
转3个圈
转4个圈
转5个圈
坐下
把内层循环的变量赋值放在外层循环里面才能保证在每次外层循环时,内层循环变量都从1开始。不然,内层循环变量第一次运行后变成6,之后一直是6,导致后面不再执行
5. 循环控制
(1) break语句:跳出本次循环(嵌套循环中只跳出一层循环)
n = 1
while n <= 100:
if n >10: #当n大于10,执行break,提前结束循环
break
print(n)
n = n +1
print('END')
>>1
2
3
4
5
6
7
8
9
10
END
(2) continue语句:跳过当前一轮循环体的剩余语句,重新测试循环状态,进入下一轮循环
n = 0
while n < 10:
n = n + 1
if n % 2 == 1: #当值为奇数时,跳过此次循环
continue
print(n)
>>2
4
6
8
10
循环是让计算机做重复任务的有效的方法。
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
6. dict字典
(1) 使用键-值(key-value)存储,具有极快的查找速度
x = {'A':1,'Z':26,'B':2,'E':5}
print(x['B'])
2
(2) 通过key添加值
x['E'] =5
print(x['A'])
{'A': 1, 'Z': 26, 'B': 2, 'E': 5}
(3) 一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值替换掉
x['A'] =8
print(x['A'])
8
(4) 如果key不存在,dict就会报错,避免key不存在的错误,有两种办法
一是通过in判断key是否存在
print('C'in x)
False
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value
print(x.get('R'))
None
print(x.get('R','not'))
not
删除一个key,用pop(key)方法,对应的value也会从dict中删除
print(x.pop('B'))
print(x)
{'A': 8, 'Z': 26, 'E': 5}
字典类型的常用方法——
clear():删除字典中所有元素。
copy():返回字典(浅复制)的一个副本。
fromkeys(seq,val=None):创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值。
get(key,default=None):返回字典中的键key对应的值value,如果字典中不存在此键,则返回default的值。
has_key(key):如果键key在字典中存在,返回True,否则返回False。python2.2后这个方法几乎已废弃不用了,通常用in来替代。
items():返回一个包含字典中键值对元组的列表。
keys():返回一个包含字典中键的列表。
iter():方法iteritems()、iterkeys()、itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。
pop(key[,default]):和方法get()类似,如果字典中key键存在,删除并返回dict[key],如果key键不存在,且没有给出default的值,引发KeyError异常。
setdefault(key,default=None):和方法get()相似,如果字典中不存在key键,由dict[key]=default为它赋值。
update(dict2):将字典dict2的键值对添加到当前字典中。
values():返回一个包含字典中所有值的列表。
7. set:是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
(1) 要创建一个set,需要提供一个list作为输入集合
q = set(['a','o','e','e','u'])
print(q)
{'e', 'o', 'u', 'a'}
注:传入的参数是一个list,而显示的set内部元素,显示的顺序也不是有序的,重复元素在set中自动被过滤
(2) 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
q.add('i')
print(q)
{'a', 'o', 'u', 'i', 'e'}
(3) 通过remove(key)方法可以删除元素
q.remove('o')
print(q)
{'e', 'i', 'u', 'a'}