1.列表的定义
>>> '列表'
'列表'
>>> [1,2,3,4,5,6]
[1, 2, 3, 4, 5, 6]
>>> type([1,2,3,4,5])
<class 'list'>
>>> type(['hello','world',1,9,True,False])
<class 'list'>
>>> type([[1,2],[True,False]])
<class 'list'>
列表里可以有多种类型,列表里也可以有列表,在其他语言里叫二维数组,对于Python可以叫做嵌套列表
2.列表的基本操作
>>> [1,2,3,4,5][0]
1
>>> [1,2,3,4,5][0:2]
[1, 2]
>>> [1,2,3,4,5][1:3]
[2, 3]
>>> [1,2,3,4,5][1:2]
[2]
>>> type([1,2,3,4,5][0])
<class 'int'>
>>> type([1,2,3,4,5][1:3])
<class 'list'>
>>> type([1,2,3,4,5][1:2])
<class 'list'>
[1,2,3,4,5][1]和[1,2,3,4,5][1:2]都是取得元素2,但是第一个的结果类型是int,第二个结果类型是列表
>>> [1,2,3,4]+[5,6,7]
[1, 2, 3, 4, 5, 6, 7]
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> [1,2,3,4]-[5,6,7]
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
[1,2,3,4]-[5,6,7]
TypeError: unsupported operand type(s) for -: 'list' and 'list'
>>> [1,2,3,4]*[5,6,7]
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
[1,2,3,4]*[5,6,7]
TypeError: can't multiply sequence by non-int of type 'list'
列表之间可以相加,但是不能相减和相乘
3.元组
>>> '元组'
'元组'
>>> type((1,2,3))
<class 'tuple'>
>>> (1,2,3,4,5)
(1, 2, 3, 4, 5)
>>> ('hello','world',1,2,5,True)
('hello', 'world', 1, 2, 5, True)
>>> (1,2,3,4)[0]
1
>>> (1,2,3,4)[1:3]
(2, 3)
>>> (1,2,3,4)[1:2]
(2,)
>>> (1,2,3,4)+(5,6,7,8)
(1, 2, 3, 4, 5, 6, 7, 8)
>>> (1,2,3)*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
元组和列表是有区别的
(查一下资料)
>>> type((1))
<class 'int'>
>>> type([1])
<class 'list'>
另外一个奇怪现象
>>> type((1))
<class 'int'>
>>> type(('hello'))
<class 'str'>
当元组里只有一个元素时,数据类型是这个单一元素的类型,而不是tuple
因为()里只有一个元素时,编译器认为()是一个运算隔离符号,而并不认为这表示了一个元组
那么如何定义只有一个元素的元组呢?
>>> type((1,))
<class 'tuple'>
这就是为什么上边有
>>> (1,2,3,4)[1:2]
(2,)
得到的是(2,)而不是(2)
如何定义一个空的元组呢?
>>> type(())
<class 'tuple'>
4.序列总结
str,list,tuple都属于序列,特点是
(1)每一个元素都有一个序号
(2)另一个概念:切片
[1,2,3,4,5][1:3]
"hello world"[0:8:2]
//取0到8个元素,步长为2
>>> "hello world"[0:8:2]
'hlow'
//取0到8个元素,步长为3
>>> "hello world"[0:8:3]
'hlw'
(3)可以+,*
(4)
>>> 3 in [1,2,3,4]
True
>>> 10 in [1,2,3,4]
False
>>> 3 not in [1,2,3,4,5,6]
False
>>> len([1,2,3,4,5,6])
6
>>> len((1,2,3,4,5,6))
6
>>> len('hello world')
11
>>> len(['hello','world',True,4])
4
>>> max((1,2,3,4,5,6))
6
>>> min((1,2,3,4,5,6))
1
>>> max('hello world')
'w'
>>> min('hello world')
' '
>>> min('helloworld')
'd'
5.set集合
特性1:无序
>>> {1,2,3,4,5}
{1, 2, 3, 4, 5}
>>> type({1,2,3,4,5})
<class 'set'>
//因为集合是无序的,所以序列里的大多数基本操作不支持
>>> {1,2,3,4,5}[3]
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
{1,2,3,4,5}[3]
TypeError: 'set' object is not subscriptable
>>> {1,2,3,4,5}[0:3]
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
{1,2,3,4,5}[0:3]
TypeError: 'set' object is not subscriptable
>>> {1,2,3,4}+{5,6}
Traceback (most recent call last):
File "<pyshell#66>", line 1, in <module>
{1,2,3,4}+{5,6}
TypeError: unsupported operand type(s) for +: 'set' and 'set'
>>> {1,2,3}*3
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
{1,2,3}*3
TypeError: unsupported operand type(s) for *: 'set' and 'int'
特性2:不重复
>>> (1,1,1,2,3)
(1, 1, 1, 2, 3)
>>> [1,1,1,2,3]
[1, 1, 1, 2, 3]
>>> {1,1,1,2,3}
{1, 2, 3}
>>> type({1,2,3})
<class 'set'>
>>> len({1,1,1,2,3})
3
>>> 1 in {1,1,1,2,3}
True
>>> 1 not in {1,1,1,2,3}
False
求两个集合的差集
>>> {1,2,3,4}-{1,4}
{2, 3}
求两个集合的交集
>>> {1,2,3,4}&{1,4}
{1, 4}
求两个集合的合集或并集
>>> {1,2,3,4}|{5,6}
{1, 2, 3, 4, 5, 6}
>>> {1,2,3,4}|{3,4,7}
{1, 2, 3, 4, 7}
如何定义一个空集?
//猜想,是不是{},结果发现{}是dict类型,不是set类型
>>> type({})
<class 'dict'>
//空集应如下表示
>>> type(set())
<class 'set'>
>>> len(set())
0
6.dict字典
由key value组成 属于集合类型,而不是序列
>>> {1:1,2:2}
{1: 1, 2: 2}
>>> type({1:1,2:2})
<class 'dict'>
>>> {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}
{'F1': '新月打击', 'F2': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺'}
>>> {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}[0]
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
{'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}[0]
KeyError: 0
>>> {'F1':'新月打击','F2':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}['F1']
'新月打击'
key是不能重复的
>>> {'F1':'新月打击','F1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}
{'F1': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺'}
key既可以是int类型,也可以是str类型,但必须是不可变的类型,比如key不可以是列表类型,但可以是元组类型
>>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}
{1: '新月打击', '1': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺'}
>>> {1:'新月打击','1':'苍白之瀑',[1,2]:'月之降临','F4':'月神冲刺','F5':{1,2,3}}
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
{1:'新月打击','1':'苍白之瀑',[1,2]:'月之降临','F4':'月神冲刺','F5':{1,2,3}}
TypeError: unhashable type: 'list'
>>> {1:'新月打击','1':'苍白之瀑',(1,2):'月之降临','F4':'月神冲刺','F5':{1,2,3}}
{1: '新月打击', '1': '苍白之瀑', (1, 2): '月之降临', 'F4': '月神冲刺', 'F5': {1, 2, 3}}
1和'1'是不同的key
>>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}[1]
'新月打击'
>>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺'}['1']
'苍白之瀑'
value可以是任意的类型
>>> {1:'新月打击','1':'苍白之瀑','F3':'月之降临','F4':'月神冲刺','F5':{1,2,3}}
{1: '新月打击', '1': '苍白之瀑', 'F3': '月之降临', 'F4': '月神冲刺', 'F5': {1, 2, 3}}
空的字典,用{}表示
>>> type({})
<class 'dict'>
7.Python数据类型思维导图
网友评论