- 我的编程之路
- 列表也是序列
- 列表元素可修改
- 遍历列表
- 列表运算符
- 列表切片
- 列表的方法
- 列表的运算符
- 删除元素
- 列表和字符串
- 对象和值
- 列表术语
从玩耍Excel表格到MySQL数据仓库,之后进入数据分析的天坑,然后再到大数据平台HIVE、Hbase。接着Django Web全栈开发。在走过这一圈之后,很多的内容学习都是碎片化的,在未来一段时间找几本书籍系统的学习一下,顺便做个笔记给后来的学生。
列表是 Python 里面最有用的一种内置类型。
列表也是序列列表是一系列的数值的序列,这些值可以是任意类型的,值一般叫做列表的元素,有时候也叫列表项。
一个简单的列表组成。
>>> list_ = ['spam', 2.0, 5, [10, 20]] >>> str_list= ['Cheddar', 'Edam', 'Gouda'] >>> num_list= [42, 123] >>> empty_list = [] >>> print(list_ , str_list, num_list,empty_list ) ['spam', 2.0, 5, [10, 20]] ['Cheddar', 'Edam', 'Gouda'] [42, 123] []列表元素可修改
和字符串不同的是,列表是可以修改的。通过指定列表元素的索引坐标进行替换修改即可。
>>> num_list = [42, 123] >>> num_list[1] = 5 >>> num_list [42, 5]
同样也可以使用in 进行元素的判断。
>>> cheeses = ['Cheddar', 'Edam', 'Gouda'] >>> 'Edam' in cheeses True >>> 'Brie' in cheeses False遍历列表
可以使用for循环进行遍历。
cheeses = ['Cheddar', 'Edam', 'Gouda']
for cheese in cheeses:
print(cheese)
Cheddar
Edam
Gouda
同样列表中嵌套列表也是可以遍历
cheeses = ['Cheddar', 'Edam', 'Gouda',['Cheddar', 'Edam', 'Gouda']]
for cheese in cheeses:
print(cheese)
Cheddar
Edam
Gouda
['Cheddar', 'Edam', 'Gouda']
列表运算符
使用 + 对列表进行拼接。
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> c = a + b >>> c [1, 2, 3, 4, 5, 6]
使用 * 对列表进行乘法拼接。
>>> [0] * 4 [0, 0, 0, 0] >>> [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3]列表切片
列表也可以进行切片操作。
>>> t = ['a', 'b', 'c', 'd', 'e', 'f'] >>> t[1:3] ['b', 'c'] >>> t[:4] ['a', 'b', 'c', 'd'] >>> t[3:] ['d', 'e', 'f'] >>> t[:] ['a', 'b', 'c', 'd', 'e', 'f'] >>> t[1:3] = ['x', 'y'] >>> t ['a', 'x', 'y', 'd', 'e', 'f']列表的方法
列表可以是用append的方法追加拼接。
>>> t = ['a', 'b', 'c']
>>> t.append('d')
>>> t
['a', 'b', 'c', 'd']
或者追加列表。
>>> t = ['a', 'b', 'c'] >>> t.append(['d']) >>> t ['a', 'b', 'c', ['d']]
可以使用 sort 对列表进行排序。
>>> t = ['d', 'c', 'e', 'b', 'a'] >>> t.sort() >>> t ['a', 'b', 'c', 'd', 'e']列表的运算符
列表内置 sum 加法运算符。
>>> t = [1, 2, 3] >>> sum(t) 6
filter方法,逐个从sequence中取一个元素,传入function,返回一个使function为真的序列。 如果参数sequence是str、unicode或者tuple,则返回相同的类型,否则都返回一个list。
def testFilter(x):
return x%2 #x是否能被2整除
print (filter(testFilter,range(1,10))) #返回不能被2整除的序列
print (filter(None,range(1,10))) #返回整个range(1,10)序列
[1, 3, 5, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
map方法,map(function, sequence) 逐个从sequence中取一个元素传入function,function的每个返回值组成列表作为map函数的返回值。
def testMap(x,y):
return x+y
print (map(testMap,range(1,5),range(1,5)))
print (map(testMap,range(1,5),range(1,3)))
[2, 4, 6, 8]
reduce方法,reduce(function, sequence) 取sequnce的第一个元素和第二个元素作为初始值传入function,计算后function的返回值和sequnce的下一个元素作为参数传入function进行计算,直到sequence的所有元素计算完成,将最后得到的值作为reduce的返回值。
def testReduce(x,y):
return x+y
#打印range(10)的所有元素相加的值,计算过程:0+1+2+..+9
print (reduce(testReduce,range(10)))
#打印10和range(10) 所有元素相加的值,计算过程:10+0+1+2+...+9
print (reduce(testReduce,range(10),10))
45
55
删除元素
如果知道元素的索引可以使用pop删除元素。
>>> t = ['a', 'b', 'c'] >>> x = t.pop(1) >>> t ['a', 'c'] >>> x 'b'
如果不知道元素的索引可以使用remove删除对应元素。
>>> t = ['a', 'b', 'c']
>>> t.remove('b')
>>> t
['a', 'c']
删除更多元素使用del。
>>> t = ['a', 'b', 'c', 'd', 'e', 'f'] >>> del t[1:5] >>> t ['a', 'f']列表和字符串
列表和字符串可以相互转换。
>>> s = 'spam' >>> t = list(s) >>> t ['s', 'p', 'a', 'm'] >>> ''.joing(t) spam >>> s = 'pining for the fjords' >>> t = s.split() >>> t ['pining', 'for', 'the', 'fjords'] >>> ' '.joing(t) pining for the fjords
如果列表的格式是字符串格式,可以使用eval转换。
str_ = "['pining', 'for', 'the', 'fjords']" eval(str_) ['pining', 'for', 'the', 'fjords']对象和值
列表和字符串在is判断的时候是有区别的。
a = 'banana' b = 'banana' >>> a is b True >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> a is b False列表术语
- 列表(list):一系列值的序列。
- 元素(element):一个列表或者其他序列中的值,也叫项。
- 网状列表(nested list):一个作为其他列表元素的列表。
- 累加器(accumulator):一种用来在循环中累加或者拼接结果的变量。
- 增强赋值语句(augmented assignment):使用+=这种自增运算符来更新变量值的语句。
- reduce:一种处理模式,遍历一个序列,把元素积累起来结合成一个单独的结果。
- map:一种处理模式,遍历一个序列,对每一个元素都进行某种运算。
- filter:一种处理模式,遍历一个列表,选取其中满足特定规则的一些元素。
- 对象(object):变量所指向的就是对象。一个对象有特定的某个类型,以及一个值。
- 相等(equivalent):有相等的值。
- 相同(identical):是同一个对象(意味着必然就是相等了)。
- 引用(reference):变量 a 与其值的关系。
- 别名(aliasing):同一个对象有两个或者更多变量所指向的情况。
- 定界符(delimiter):一个字符或者字符串,用来确定字符分割时候的分界。



