python学习之数据类型—列表list
列表:list
1、可变数据类型(不可哈希数据)、可切片、可循环
2、有序
3、可存任意数据类型
4、可增删改查
概括:
增:
append(元素)
insert(index,元素)
extend(iterable)
删:
pop(index)
remove(元素)
del[index/切片]
clear()
del list
改:
list【切片】= new_data
查:
list[index]
for i in list:pass
方法:
len()
count()
index()
sort(,reverse=False)升序,reverse为True时,降序,改变的是列表本身
reverse()列表反转
身份判断
判断某个元素是否再字符串中或再列表,元组中 可以用
“元素” in str
“元素” in list
“元素” in tuple
1、 列表
1.1、(建)可以创建空列表 list = [] list.append('David') print (list) ----->结果:['David'] 通过append()来向列表尾部添加元素。 注:list.append 中间的点“.” 是让对象调用内置关键字来进行某种操作。 (^-^)要想用对象做某种处理,需要这个对象的名字(变量名), 然后是一个点,再后面是要对对象做的操作。 1.2、(查/改)列表中可同时包含不同类型的数据 索引(index)表示元素的位置,从0开始算 list[0] -->得到的是一个元素 切片 list[0:4] --->0,1,2,3-->得到的是一个列表 简写list[:4] 从头到第三个元素 list[0:] 从第一个元素到列表结尾 list[:] 将列表全部显示出来 修改list中的元素值list[2]=new_data 1.3、(增)向列表中添加元素方法: list.append() 向列表末尾增加一个元素 list.extend() 向列表末尾增加多个元素 list.insert() 自定义向列表中增加一个元素,可定义位置 list.append('new_data') list.extend(['new_data1','new_datan']) list.insert(位置参数,'new_data') 1.4、(删)从列表中删除元素 list.remove() 删除你选择的一个元素,如列表中有多个相同的元素,仅删除索引最小的那个即从左到右第一个出现的该元素,如果想去重可以将列表转换成集合即可set(list) del list[位置参数] list.pop() 取出列表中最后一个元素并删除 list.pop(位置参数) 取出列表中指定位置的元素并删除 1.4.1、某元素是否在列表中用: '元素' in list 通过返回true和flash来判定 1.4.2、查找元素在列表中的索引及位置参数用:list.index('元素') 1.5、列表排序 list.sort() 按字母顺序对字符串进行排序,直接改变列表顺序而不创建一个新的列表 eg:a = ['a','c','b','f','e'] a.sort() print (a) 结果:['a', 'b', 'c', 'e', 'f'] 注:如 sun_list = a.sort(),print(sun_list) 是没有结果的 list.reverse() 按逆序排列或者a.sort(reverse = true) eg:a.reverse() print(a) 结果:['f','e','c','b','a'] 注:因排序是直接改变列表顺序,而不是生成新的列表,故如果不希望改变原数据, 可以通过列表切片来生成副本,再对副本进行排序即可。 eg:new_a = a[0:] 或 a[:] new_a.sort() print(new_a) >>['a', 'b', 'c', 'e', 'f'] 或者借助Python中提供的方法创建一个"排序后"的列表副本而原列表不变: sorted() eg:new_list=sorted(a) print (a) >>['a','c','b','f','e'] print(new_list) >>['a', 'b', 'c', 'e', 'f'] 列表是可以改变的类型,而数字或字符串,元组(tuple)都是不可改变的,即不能增删和排序。 1.6、双重列表 ------------------------- 语文 数学 英语 ------------------------- sun 88 89 60 ------------------------- xiu 90 55 77 ------------------------- wen 59 59 59 ------------------------- sun_marks = [88,89,60] xiu_marks = [90,55,77] wen_marks = [59,59,59] class_marks =['sun_marks','xiu_marks','wen_marks'] 或 class_marks =[[88,89,60],[90,55,77],[59,59,59]] 即想得到值通过位置参数即索引来得到,如: print class_marks[1] >>> [90,55,77]-----》从而得到"xiu_marks"的各科成绩 如果想得到他的某一个成绩,Python通过二次索引得到 print class_marks[1][0] >>>90
列表中的元素删除:
因直接删除列表或字典时,改变了列表的索引,字典的长度,导致可能达不到目的或报错
万能办法:
1、将原列表要删除的元素,保存到另一个临时列表
2、循环临时列表,根据临时列表中的元素,在原列表中删除
1 # 删除奇数的元素:
2 li = [11, 22, 33, 44, 55]
3 # 1、创建存放想删除元素的临时列表
4 lis_temp = []
5 # 2、循环原列表,将需要删除的元素添加到临时列表
6 for el in li:
7 if el % 2 == 1:
8 lis_temp.append(el)
9 # 3、循环临时列表,根据元素去查找原列表相同元素,并删除
10 for el2 in lis_temp:
11 li.remove(el2)
12 # 4、打印原列表查看结果
13 print(li) # [22, 44]
### Python - 去除list中的空字符
list1 = ['122', '2333', '3444', '', '', None] a = list(filter(None, list1)) # 只能过滤空字符和None print(a) # ['122', '2333', '3444'] # Python内建filter()函数 - 过滤list # filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素 def not_empty(s): return s and s.strip() list2 = ['122', '2333', '3444', ' ', '422', ' ', ' ', '54', ' ', '', None, ' '] print(list(filter(not_empty, list2))) # ['122', '2333', '3444', '422', '54'] # 不仅可以过滤空字符和None而且可以过滤含有空格的字符 注意: Pyhton2.7 返回列表,Python3.x 返回迭代器对象
人生苦短,我用python!