2018.11.25 使用 list(列表) 和 tuple(元组) list(列表)
1、list 是一种有序的集合,可以随时添加和删除其中的元素。
2、classmates = ['Michael', 'Bob', 'Tracy'] 变量 classmates 就是一个 list。用 len()函数可以获得 list 元素的个数len(classmates)为3。
3、classmates[0]输出为:'Michael'。记得最后一个元素的索引是 len(classmates) - 1。如果要取最后一个元素,可以用-1 做索引,直接获取最后一个元素:以此类推,可以获取倒数第 2 个(-2)、倒数第3 个(-3):classmates[-1] 为 'Tracy',classmates[-2] 为'Bob'
4、list末尾追加元素:classmates.append('Adam') ,classmates输出为['Michael', 'Bob', 'Tracy', 'Adam']
5、插入到指定的位置,比如索引号为 1 的位置:classmates.insert(1,'jack') classmates.insert(1, 'Jack') 则classmates输出为['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
6、list 删除末尾的元素,用 pop():classmates.pop()输出为classmates最后一个元素'Tracy',则classmates =['Michael', 'Bob'] 要删除指定位置的元素,用 pop(i)方法,其中 i 是索引位置:classmates.pop(1)为'Bob'
7、把某个元素替换成别的元素,可以直接赋值给对应的索引位置:classmates[1]='你好‘。则classmates为 ['Michael', '你好‘, 'Tracy'] (list 里面的元素的数据类型也可以不同)list 元素也可以是list,比如:s = ['python', 'java', ['asp', 'php'], 'scheme']等价于s=['python', 'java', t, 'scheme']。len(s)等于3;t=['asp', 'php']
8、空列表:L = []→len(L)等于0;
tuple(元组)
1、tuple 一旦初始化就不能修改classmates = ('Michael', 'Bob', 'Tracy') classmates 这个 tuple(元组) 不能变了,它也没有 append(),insert()这样的方法。其他获取元素的方法和 list 是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。因为 tuple 不可变,所以代码更安全。能用 tuple 代替 list 就尽量用 tuple。
tuple 的陷阱:当你定义一个 tuple 时,tuple 的元素就必须被确定下来t=(1,2,3,5);t为(1,2,3,5)
2、如果要定义一个空的 tuple,可以写成t = () :t为()
3、t = (1) ,t为1,定义的不是 元组,是 1 这个数!这是因为括号()既可以表示 tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python 规定,这种情况下,按小括号进行计算,计算结果自然是 1。所以,只有 1 个元素的 tuple 定义时必须加一个逗号",",来消除歧义:
4、t=(1,)
print(t)
>>(1,)
5、a= ('a', 'b', ['A', 'B']),
print(a[2][0])
>>'A'
a[2][0] = 'X', a[2][1] = 'Y':
print(a)
>>('a', 'b', ['X', 'Y'])
tuple 的元素确实变了,但其实变的不是 tuple 的元素,而是list 的元素。 tuple 一开始指向的 list 并没有改成别的 list,所以,tuple所谓的“不变”是说,tuple 的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个 list,就不能改成指向其他对象,但指向的这个 list 本身是可变的。
input(输入)
birth = input('birth: ')
if birth < 2000:
print('00 前')
else:
print('00 后')
如果输入 1982,结果报错 这是因为 input()返回的数据类型是 str,str 不能直接和整数比较,必须先把 str 转换成整数。
Python 提供了 int()函数来完成这件事情: s = input('birth: ') birth = int(s) if birth < 2000: print('00 前') else: print('00 后') 再次运行,就可以得到正确地结果。
for(循环)
1、Python 的循环有两种: 一种是 for...in 循环,依次把 list 或 tuple 中的每个元素迭代出来 第二种循环是 while 循环
2、d = [5,7,"你好"]
for x in d: print(x) #执行这段代码,会依次打印d的每一个元素:
5
7
你好
3、num=[1,2,3,4,5,6,4,5,6,7,8,9,10] sum=0; for x in num: sum=sum+x print(sum) 输出为70 小记:num=list(range(5)) 生成的序列是从 0 开始小于 5 的整数:
4、第二种循环是 while 循环,只要条件满足,就不断循环,条件不满足时退出循环。
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum) #输出:
>>2550 #在循环内部变量 n 不断自减2,直到变为-1 时,不再满足 while 条件,循环退出。
2018.11.26 dict(字典)
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
1、print(d['Michael'])
>>95
2、d['Michael']=100 print(d)
{'Michael': 100, 'Bob': 75, 'Tracy': 85}
3、 末尾添加元素:
d["henry"]=99
print(d)
>>{'Michael': 100, 'Bob': 75, 'Tracy': 85,"henry":99}
4、删除元素:要删除一个 key,用 pop(key)方法,对应的 value 也会从 dict 中删除:
d.pop('Bob') print(d)输出:{'Michael': 95, 'Tracy': 85} set 要创建一个要创建一个 set,需要提供一个 list 作为输入集合: s = set([1, 2, 3]) 1、print(s)输出为:{1, 2, 3} 传入的参数[1, 2, 3]是一个 list,而显示的{1, 2, 3}只是告诉你这个 set 内部有 1,2,3 这 3 个元素,显示的顺序也不表示 set 是有序的。
2、重复元素在 set 中自动被过滤:s = set([1, 3,3,4]) print(s)输出:{1, 3,4} 3、通过 add(key)方法可以添加元素到 set 中,可以重复添加,但不会有效果
s.add(6)
print(s)
{1, 3,4,6},s.add(6)
print(s)
>>{1, 3,4,6}
4、通过 remove(key)方法可以删除元素:
s.remove() s.remove(3)
print(s)
>>{1, 4,6}
5、set 可以看成数学意义上的无序和无重复元素的集合,因此,两个 set 可以做数学意义上的交集、并集等操作
s = set([1, 2, 3,3,4])
q=set([1,2,6,9])
a=q&s#交集
print(a)
>>{1,2}
a=q|s
print(a)
>>{1,2,3,4,6,9}
函数
1、int()函数可以把其他数据类型转换为整数
a=int('12'):a=12
2、函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
s = [1, 2, 3,3,4]
a=max
a(s)等价于max(s);
3、定义函数:在 Python 中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:
然后,在缩进块中编写函数体,函数的返回值用 return 语句返回
range()
range(start, stop)
1、start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5)
2、stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
3、step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
例如:
for x in range(0,-10,-2):
print(x)
0
-2
-4
-6
-8