1. 基本数据类型
1.1 dict:字典其实是一堆键值对(key value pair),字为键(key),而相应的解释为值(value)
#dict基本操作
#初始化一个dict类型变量
x = {"a":1,"b":2,"c":3}
print(x)
{'a': 1, 'b': 2, 'c': 3}
#读取x中某一个元素
print(x["a"],"1",x.get("a"))
1 1 1
#读取不存在的元素会直接报错
print(x["d"])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-8-2c00af4c2268> in <module>()
----> 1 print(x["d"])
KeyError: 'd'
print(x.get("d","no such key"))
no such key
#修改dict
x["c"] = 4
print(x)
{'a': 1, 'b': 2, 'c': 4}
#删除键值对
del x["c"]
print(x)
{'a': 1, 'b': 2}
1.2 list:就是列表类型,可以将任意一个元素放进列表
#list基本操作
#初始化一个list变量y
y=["A","B","C","a","b","c"]
print(y)
['A', 'B', 'C', 'a', 'b', 'c']
#读取y中元素
print(y[0])
A
print(y[-1])
c
print(y[0:3])
['A', 'B', 'C']
#查找y的元素
print(y.index("a"))
3
#修改list
y[0] = 4
print(y)
[4, 'B', 'C', 'a', 'b', 'c']
#在y的最后面插入元素
y.append(5)
print(y)
[4, 'B', 'C', 'a', 'b', 'c', 5]
#在指定位置插入元素
y.insert(3,"new")
print(y)
[4, 'B', 'C', 'new', 'a', 'b', 'c', 5]
#两个list合并,和append是有区别的
print(y+["d","e"])
[4, 'B', 'C', 'new', 'a', 'b', 'c', 5, 'd', 'e']
y.append(["d","e"])
print(y)
[4, 'B', 'C', 'new', 'a', 'b', 'c', 5, ['d', 'e']]
#删除lsit元素
y.remove("B")
print(y)
[4, 'C', 'new', 'a', 'b', 'c', 5, ['d', 'e']]
1.3tuple类型
#tuple基本操作
#初始化一个tuple类型变量z
z = ("a","b","c","d","e")
print(z)
('a', 'b', 'c', 'd', 'e')
#读取z中的元素,与list类似
print(z[0])
a
print(z[-1])
e
print(z[0:3])
('a', 'b', 'c')
#tuple一旦初始化就不能修改
z[0] = 5
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-54-d46bec7c52da> in <module>()
----> 1 z[0] = 5
TypeError: 'tuple' object does not support item assignment
2. lambda表达式和常用的内置函数
lambda表达式类似于函数,以关键字lambda开头,之后是参数列表,并以“:”结尾,接着就是只有一行语句的表达式主题。什么时候会用到lambda表达式呢,创建匿名函数时。
2.1 lambda表达式和常用内置函数
def f(a,b):
return a+b
print(f(1,2))
3
g = lambda x,y:x+y
print(g(1,2))
3
2.2 lambda表达式和常用内置函数
L = range(6)
print(L)
range(0, 6)
#下面的操作将生成一个新的列表,列表里面的元素为L里元素加1
def addOne(data):
re = []
for i in data:
re.append(i+1)
return re
print(addOne(L))
[1, 2, 3, 4, 5, 6]
#通过内置的map函数和lambda表达式也可以达到相同的效果
print(map(lambda x:x+1,L))
<map object at 0x0000000005AEAB00>
#达到同样功能的列表生成式
print([i+1 for i in L])
[1, 2, 3, 4, 5, 6]
内置的map函数有两个参数,第一个是一个函数,第二个是一个可遍历的对象,如list、tuple、dict等,map函数将第二个参数里的每个元素依次传给第一个参数的函数,并将函数的返回值依序组成一个列表。lambda定义了一个匿名函数,因为它起到了函数的功能,却没有任何标识符来代表它,所以称为匿名函数
2.3 lambda表达式和常用内置函数
#计算L中每个元素的两倍和平方,并将两种组成一个列表
#lambda表达式和Python函数一样,也可以接受函数作为参数
twoTimes = lambda x: x*2
square = lambda x:x**2
print(map(lambda x:x(i),[twoTimes,square])for i in L)
<generator object <genexpr> at 0x0000000005A4CBF8>
2.4 lambda表达式和常用内置函数
#内置filter函数,选择L中的偶数
filter(lambda x:x % 2 == 0,L)
Out[88]: <filter at 0x5afad30>
list(filter(lambda x:x % 2 == 0,L))
Out[92]: [0, 2, 4]
#内置reduce函数,计算L的和。Python 3版本需要先导入reduce
from functools import reduce
reduce(lambda x,y:x + y,L,0)
Out[112]: 15