容器
一、列表(list)
列表是顺序表,可以存放多种类型的数据,可以变。
创建列表的三种方式:
- [a,b,c]
- list(a,b,c)
- 从字符串转换
list()可将元组转化为列表
>>> a = list ["fanlinfei"]
>>> a
['f', 'a', 'n', 'l', 'i', 'n', 'f', 'e', 'i']
访问列表中的元素的方式:
利用下标(下标从0开始),使用下标越界时将会报错。
>>> a[5]
'n'
>>> a[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>
修改列表中元素的方式:
利用a[下标] = 新值,进行赋值。
>>> a[0] ='m'
>>> a
['m', 'a', 'n', 'l', 'i', 'n', 'f', 'e', 'i']
遍历元素的方式:
1、while
a = ['你','我','他','她','它']
i = 0
while i < len(a)
print(a[i])
i += 1
2、for
a = ['你','我','他','她','它']
for i in a:
print(i)
3、依次遍历
a = [1,2,3,4,5]
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
求列表长度的方式:
1、全局函数len
>>> a = [1,2,3,4,5]
>>> len(a)
5
2、使用while循环遍历
index = 0
while index < len(a):
print(a[index])
index += 1
列表的常用方法
- append 在尾部追加一个新的元素
>>> a = [1,2,3,4,5]
>>> a.append (8)
>>> a
[1, 2, 3, 4, 5, 8]
>>>
- clear 清空容器
>>> a
[1, 2, 3, 4, 5, 8]
>>> a.clear()
>>> a
[]
>>>
- copy 浅拷贝list,一定分别出拷贝和引用传递
>>> a = [1,2]
>>> aa = a.copy()
>>> aa
[1, 2]
>>>
- count 统计元素在列表中的个数
>>> a.count(0)
0
>>> a.count(1)
1
- index 查询元素在列表中第一次出现的下标位置,注意: 如果列表中不存在该元素,则抛出异常
>>> a.index(1)
0
>>> a.index(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 0 is not in list
>>>
- insert 制定要插入的元素的位置
>>> a.insert(999,0)
>>> a
[1, 2, 0]
>>> a.insert(0,999)
>>> a
[999, 1, 2, 0]
>>>
- pop 通过下标移除元素,注意:默认没有下标时删除最后一个
>>> a.pop()
0
>>> a
[999, 1, 2]
>>> a.pop(1)
1
>>> a
[999, 2]
>>>
- remove 移除对应的元素,,注意:如果列表中不存在该元素,则抛出异常
>>> a.remove(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> a.remove(999)
>>> a
[2]
- reverse 翻转元素的顺序
>>> a
[1, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 1]
>>>
- sort 排序(主要针对数字)
>>> a
[3, 2, 1]
>>> a.sort()
>>> a
[1, 2, 3]
>>>
- extend 合并列表
>>> a = [1]
>>> b = [2]
>>> a.extend(b)
>>> a
[1, 2]
二、集合(set)
使用全局函数 : set()
注意:如果没有初始化的值,不要直接使用 { } 反向定义,默认字典类型
特点:元素唯一,不允许重复,无序的
>>> a = set({1,2,3,4,5,5,4,3,2,1})
>>> a
{1, 2, 3, 4, 5}
set 的常用方法
- add:添加元素
>>> a.add(1)
>>> a.add(6)
>>> a
{1, 2, 3, 4, 5, 6}
>>>
- clear:清空集合
>>> a.clear()
>>> a
set()
>>>
- copy:复制
>>> c = a.copy()
>>> c
{1, 2, 3, 4, 5, 6}
>>>
- difference:求a对b差集
>>> a.difference(b)
{1, 2}
>>>
- discard:移除元素
>>> a.discard(1)
>>> a
{2, 3, 4, 5, 6}
>>>
- intersection:求两个集合的交集
>>> a.intersection({4,5,6,7,8,9})
{4, 5, 6}
>>>
- pop
>>> a.pop
<built-in method pop of set object at 0x000001E103C5EE48>
>>> a.pop(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop() takes no arguments (1 given)
>>>
- remove:移除元素
>>> a.remove(1)
>>> a
{2, 3, 4, 5}
>>>
- union: 求两个集合的并集合
>>> a
{1, 2, 3, 4, 5, 6}
>>> b = set({3,4,5,6,7})
>>> a.union(b)
{1, 2, 3, 4, 5, 6, 7}
>>>
三、元组(tuple)
元组(tuple) 不可变类型
元组也是通过下标访问的!!!
创建元组查询下标为0的元组元素;
>>> a = tuple()
>>> a
()
>>> a = tuple((1,2,3,4))
>>> a
(1, 2, 3, 4)
>>>
>>> a[0]
1
常用方法:
- count 求元素个数
>>> a.count(0)
0
>>> a.count(1)
1
- index
>>> a.index(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>> a.index(1)
0
注意:元组是不可变类型,意味着当元组中的值定义好之后,再无法修改,但是注意,如果元组的元素是可变类型,那么该元组是可变的!
注意2:在定义元组时,如果只有一个元素,那么一定要在该元素后面加个逗号,否则Python解释器会将该元组当成一个数字对待(圆括号就数学上的含义)
>>> b = tuple()
>>> b = (1)
>>> type(b)
<class 'int'>
>>> b = (1,)
>>> type(b)
<class 'tuple'>
>>>
四、字典(dict)
Python中的字典类型,key必须是字符串!!!
定义方法:
1、{}
2、{“a”: “b”, “c”: 1}
3、dict()
4、dict({“a”: “b”, “c”: 1})
访问元素方法:
1、d[key]
2、d[key] = 新值 当key不存在时,则新增这个键值对。
常见的方法:
1、'clear’清空字典
>>> a.clear()
>>> a
{}
2、‘copy’
>>> a = dict({'1':1,'2':2})
>>> b = a.copy()
>>> b
{'1': 1, '2': 2}
>>>
3、‘fromkeys’:
结构:d.fromkeys(容器,值)
>>> a
{'1': 1, '2': 2}
>>> a.fromkeys(['4','5','6'])
{'4': None, '5': None, '6': None}
>>>
4、‘get’:输入键得到值
>>> a.get('1')
1
5、‘items’:返回所有键值对
>>> a.items()
dict_items([('1', 1), ('2', 2)])
>>>
6、‘keys’:以list返回所有键
>>> a.keys()
dict_keys(['1', '2'])
7、‘pop’
>>> a
{'1': 1, '2': 2}
>>> a.pop('1')
1
8、'popitem’压栈一个键值对
>>> a.popitem()
('2', 2)
9、‘values’:以list返回所有值
>>> a.values()
dict_values([1, 2])