赞
踩
这些存储大量数据的容器,在Python中称之为内置数据结构(Built-in Data Structure)
4种内置数据结构(容器类型)
列表(list): [ val1, val2, val3, val4 ]
元组(tuple): ( val1, val2, val3, val4 )
字典(dict): { key1:val1, key2:val2 }
集合(set): { key1, key2, key3, key4 }
什么是列表?
列表是处理一组有序项目的数据结构
列表是python中最具灵活性的有序集合对象类型
列表可以包含任何类型的对象:字符串、数字甚至其他列表
列表是可变的数据类型,即这种类型的值是可以被修改的
- #########列表的定义#######
- #定义空列表
- >>> lst = []
- >>> type(lst)
- <class 'list'>
- >>> lst2 = list()
- >>> lst2
- []
-
- # list 列表转换函数
- >>> lst3 = list('abc')
- >>> lst3
- ['a', 'b', 'c']
- >>> list('123')
- ['1', '2', '3']
- >>> type(lst3)
- <class 'list'>
-
-
- >>> list(123)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: 'int' object is not iterable
-
- >>> list(range(3))
- [0, 1, 2]
有序项项目集合 (有下标,可切片)
列表基本操作-切片
切片是通过下标访问列表中的元素,切片可以取出一个子列表
格式:
sample[start:end:step]
起止区间:[ start, end )
step: 默认=> 1
start: 默认=> step为正时,start为0;step为负时, start为-1
end: 默认=> step为正时,end为列表结尾;step为负时, end为列表开始
注意:三个值都为选填项
- >>> lst = ["a", 1, 0.5, None, "y"]
- >>> lst[3]
- >>> lst[4]
- 'y'
- >>> lst[2]
- 0.5
- >>> lst[2:3]
- [0.5]
- >>> lst[2:]
- [0.5, None, 'y']
- >>> lst[-2:]
- [None, 'y']
- >>> lst[6]
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- IndexError: list index out of range
- >>> lst[-4:4:-1]
- []
列表中可以存放任何数据类型
- >>> lst = ["a", 1, 0.5, None, "yxx", print]
- >>> lst
- ['a', 1, 0.5, None, 'yxx', <built-in function print>]
- >>> lst = ["a", 1, 0.5, None, "yxx", print, [1,2]]
列表是可变数据类型
可变和不可变 主要看在原来的内存地址上能不能修改值
- >>> str1 = "abc"
- >>> str1[1]
- 'b'
- >>> str1[1]="c"
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: 'str' object does not support item assignment
- >>> str1 = "acc"
- >>> lst
- ['a', 1, 0.5, None, 'yxx', <built-in function print>, [1, 2]]
- >>> lst[1]
- 1
- >>> id(lst)
- 140711207088584
- >>> lst[1]=2
- >>> lst
- ['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2]]
- >>> id(lst)
- 140711207088584
列表的基本操作
增加 -- append 每次在列表末尾追加一个元素,作为整体追加,类型不限
extend -- 扩展,将1个列表里的内容扩展到另外一个列表里去
- >>> lst.append("sanchuang")
- >>> lst
- ['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2], 'sanchuang']
- >>> lst.append("sanchuang","tongle")
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: append() takes exactly one argument (2 given)
- >>> lst.append([3,4,5])
- >>> lst
- ['a', 2, 0.5, None, 'yxx', <built-in function print>, [1, 2], 'sanchuang', [3, 4, 5]]
-
-
- >>> lst = [1,2,3]
- >>> lst.append(4)
- >>> lst
- [1, 2, 3, 4]
-
- >>> lst.extend("qwer")
- >>> lst
- [1, 2, 3, 4, 'q', 'w', 'e', 'r']
增加 --insert 在指定下标位置添加元素
- >>> lst
- ['a', 'x']
- >>> lst.insert(1,'yy')
- >>> lst
- ['a', 'yy', 'x']
列表是可以进行加法和乘法运算的
- >>> [1,2] + [3,4]
- [1, 2, 3, 4]
- >>> [1,2]*3
- [1, 2, 1, 2, 1, 2]
删除 -pop 指定下标删除,默认删除最后一个,并且将删除的元素作为返回值返回
- >>> lst = ["a","b","c"]
- >>> lst.pop()
- 'c'
- >>> lst
- ['a', 'b']
- >>> remove_item = lst.pop()
- >>> remove_item
- 'b'
- >>> lst.append("x")
- >>> lst.append("")
- >>> lst.append("y")
- >>> lst
- ['a', 'x', '', 'y']
- >>> lst.pop(2)
- ''
- >>> lst
- ['a', 'x', 'y']
删除 - remove 指定元素删除 -- 删除列表中匹配的第一个元素,如果列表中没有指定元素,会报错
- >>> lst
- ['a', 'x', 'y']
- >>> lst.remove('y')
- >>> lst
- ['a', 'x']
- >>> lst.remove("y")
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- ValueError: list.remove(x): x not in list
- >>> lst.append("y")
- >>> lst.append("y")
- >>> lst
- ['a', 'x', 'y', 'y']
- >>> lst.append("u")
- >>> lst.append("y")
- >>> lst
- ['a', 'x', 'y', 'y', 'u', 'y']
- >>> lst.remove("y")
- >>> lst
- ['a', 'x', 'y', 'u', 'y']
del -- 删除
只要通过下标,切片能切出来,都可以使用del删除
- >>> lst
- ['a', 'x', 'y', 'u', 'y']
- >>> del lst[1]
- >>> y
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'y' is not defined
- >>> lst
- ['a', 'y', 'u', 'y']
- >>> del lst[2:]
- >>> lst
- ['a', 'y']
删除 -clear 清空列表
- >>> lst.clear()
- >>> lst
- []
可以通过下标和切片来进行增加和修改
当切片出来的列表为空的时候,就是在start位置开始插入相应的值
当切片出来的列表不为空的时候,则替换查找出来的list元素
切片修改,必须要赋值一个可迭代对象
下标修改,可以接受任意值
- >>> lst
- ['xx', 'y', 1, 'u', 3]
- >>> lst[3]="t"
- >>> lst
- ['xx', 'y', 1, 't', 3]
- >>> lst[1:1]
- []
- >>> lst[1:1] = "qw"
- >>> lst
- ['xx', 'q', 'w', 'y', 1, 't', 3]
- >>> lst[1:4] = "ab"
- >>> lst
- ['xx', 'a', 'b', 1, 't', 3]
- >>> lst[4:2]
- []
- >>> lst[4:2] = “rrr”
- File "<stdin>", line 1
- lst[4:2] = “rrr”
- ^
- SyntaxError: invalid character in identifier
- >>> lst[4:2] = "rrr"
- >>> lst
- ['xx', 'a', 'b', 1, 'r', 'r', 'r', 't', 3]
- >>> lst[4:2] = 12
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: can only assign an iterable
- >>> lst[2] = 100
- >>> lst
- ['xx', 'a', 100, 1, 'r', 'r', 'r', 't', 3]
列表反转 负切片 或者是 reverse
- >>> lst[::-1]
- [3, 't', 'r', 'r', 'r', 1, 100, 'a', 'xx']
- >>> lst.reverse()
- >>> lst
- [3, 't', 'r', 'r', 'r', 1, 100, 'a', 'xx']
排序 -- sort 默认升序
列表中的数据类型一致
- >>> lst = [6,2,3,1,4,5]
- >>> lst.sort()
- >>> lst
- [1, 2, 3, 4, 5, 6]
- >>> lst.sort(reverse=True) #降序排序
- >>> lst
- [6, 5, 4, 3, 2, 1]
字符串按照编码来排序
- >>> lst = ["abc","中国","bd","abd","你好"]
- >>> lst.sort()
- >>> lst
- ['abc', 'abd', 'bd', '中国', '你好']
- >>> ord('a')
- 97
- >>> ord('中')
- 20013
- >>> ord('你')
- 20320
统计 -- len , count, index
- >>> lst
- ['abc', 'abd', 'bd', '中国', '你好']
- >>> len(lst)
- 5
- >>> lst.count("abc")
- 1
- >>> lst.count("a")
- 0
- >>> lst.index("abd")
- 1
- >>> lst.index("abde")
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- ValueError: 'abde' is not in list
遍历:依次取出对象中的每一项数据
list是一个可迭代对象(iterable),可以直接用for遍历
- >>> lst = ["aa","bb","cc"]
- >>> for i in lst:
- ... print(i)
- ...
- aa
- bb
- cc
- >>> for i in enumerate(lst):
- ... print(i)
- ...
- (0, 'aa')
- (1, 'bb')
- (2, 'cc')
-
- >>> for i,j in enumerate(lst):
- ... print(f"{i} ---> {j}")
- ...
- 0 ---> aa
- 1 ---> bb
- 2 ---> cc
成员关系:判断列表中是否有某个数据
- >>> lst
- ['aa', 'bb', 'cc']
- >>> 'aa' in lst
- True
- >>> 'c' in lst
- False
- >>> 'c' not in lst
- True
查看list对象
- >>> dir(list)
- ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
小练习
- >>> a = ['apple','orange',123,0.1111,'cali']
- >>> a[1:]
- ['orange', 123, 0.1111, 'cali']
- >>> a[2:6]
- [123, 0.1111, 'cali']
- >>> a[1:2]
- ['orange']
- >>> a[0]
- 'apple'
- >>> a[-1]
- 'cali'
- >>> a
- ['apple', 'orange', 123, 0.1111, 'cali']
- >>> for i in a:
- ... print(i)
- ...
- apple
- orange
- 123
- 0.1111
- cali
- >>> a = ['python','java','c']
- >>> a.append('我是追加')
- >>> a
- ['python', 'java', 'c', '我是追加']
-
- >>> a.pop()
- '我是追加'
-
- >>> del a[0]
- >>> a
- ['java', 'c']
-
- >>> 'cali' in a
- False
-
- >>> len(a)
- 2
-
- >>> a.insert(1, ['liu','cali',123,456])
- >>> a
- ['java', ['liu', 'cali', 123, 456], 'c']
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。