python 基础2 表示“组”的概念与定义
表示组的方式:
列表:
>>> type([1,2,3,4])
<class 'list'>
>>> type([["hello"],["world"],[1,9,True,False]])
<class 'list'>
列表基本操作方法:(与字符串截取相似)
>>> ["新月打击","苍白之暴","月之降临","月神冲刺"][0] 释放“新月打击”
'新月打击'
>>> ["新月打击","苍白之暴","月之降临","月神冲刺"][3]
'月神冲刺'
>>> ["新月打击","苍白之暴","月之降临","月神冲刺"][0:2]
['新月打击', '苍白之暴']
>>> ["新月打击","苍白之暴","月之降临","月神冲刺"][-1:]
['月神冲刺']
>>>
>>> ["新月打击","苍白之暴","月之降临","月神冲刺"]+['点燃','虚弱']
['新月打击', '苍白之暴', '月之降临', '月神冲刺', '点燃', '虚弱']
>>> ['点燃','虚弱']*['点燃','虚弱']
Traceback (most recent call last):
File "<pyshell#134>", line 1, in <module>
['点燃','虚弱']*['点燃','虚弱']
TypeError: can't multiply sequence by non-int of type 'list'
>>> ['点燃','虚弱']*3
['点燃', '虚弱', '点燃', '虚弱', '点燃', '虚弱']
>>>
嵌套列表:[['巴西'],['克罗地亚'],['墨西哥'],['喀麦隆'],[],[][],[]]
元祖:
>>> (1,2,3,4,5)
(1, 2, 3, 4, 5)
>>> (1,-1,True)
(1, -1, True)
>>> (1,2,3,4)[0]
1
>>> (1,2,3,4)[0:2]
(1, 2)
>>> (1,2,3)+(4,5,6)
(1, 2, 3, 4, 5, 6)
>>> (1,2,3)*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>>
列表和元祖的区别:
list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。
列表中的项目应该包括在方括号中,这样Python就知道你是指明一个列表。一旦你创建了一个列表,就可以添加、删除,或者是搜索列表中的项目。由于你可以增加或者删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的,且列表是可以嵌套的。
元祖(tuple)和列表十分相似,不过元祖是不可变的。即你不能修改元祖。
元祖通过圆括号中用逗号分隔的项目定义。元祖通常在使语句或者用户定义的函数能够安全的采用一组值得时候,即被使用的元祖的值不会改变。元祖可以嵌套。
类型:int、str、list
>>> type((1,2,3))
<class 'tuple'>
>>> type([1,2,3])
<class 'list'>
>>> type('hello')
<class 'str'>
>>>
>>> type((1)) 猜测:元祖单一元素是整型,所以类型是整型
<class 'int'>
>>> type(('hello')) 在Python里面,如果括号里只有一个元素,会认为()是运算符,而不是表示 <class 'str'> 一个元祖
>>>
那么,如何定义只有一个元素的元祖?
>>> type((1,))
<class 'tuple'>
>>>
当列表里只有一个元素时:
>>> type([1])
<class 'list'>
>>>
“组”=序列 str ,list, tuple 都可以看成是序列
序列共有的操作:
>>> 'hello'[2] 序号
'l'
>>> [1,2,3][2]
3
>>>
>>> [1,2,3,4,5,6][0:3] 切片
[1, 2, 3]
>>> [1,2,3,4,5,6][-1:]
[6]
>>> 'hello world'[0:8]
'hello wo'
>>> 'hello world'[0:8:2] ???
'hlow'
>>>
是否序列中包含某个元素? bool类型
>>> 3 in [1,2,3,4,5,6]
True
>>> 3 in [1,2,4,5,6]
False
>>> 3 not in [1,2,4,5,6]
True
>>> 3 not in [1,2,3,4,5,6]
False
>>>
序列内部共有多少个元素?
>>> len([1,2,3,4,5,6])
6
>>> len('hello world')
11
>>>
序列内部最大值,最小值求法:
>>> 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'
>>>
ASCII??? 根据码值大小输出
>>> ord('w') 输出字母ASCII码值
119
>>> ord(' ')
32
>>> ord('d')
100
>>>
集合set : 无序,定义{ },不重复
>>> type({1,2,3,4,50,6})
<class 'set'>
>>> {1,2,3,4,50,6}[2] 错误原因,无序,无法按序号返回
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
{1,2,3,4,50,6}[2]
TypeError: 'set' object does not support indexing
>>> {1,2,3,4,50,6,6,6,50} 不重复
{1, 2, 3, 4, 6, 50}
>>>
集合是否包含某个元素?
>>> 1 in {1,2,3}
True
>>> 1 not in {1,2,3}
False
>>>
集合运算:
将第一个集合里包含第二个集合的元素剔除:
>>> {1,2,3,4,5,6}-{3,4} “减法”,实际是求两个集合差值
{1, 2, 5, 6}
>>>
>>> {1,2,3,4,5,6}&{3,4} 集合交集
{3, 4}
>>>
>>> {1,2,3,4,5,6} | {3,4,7} 两个集合合并
{1, 2, 3, 4, 5, 6, 7}
>>>
如何定义空的集合?
>>> type({}) 空集合
<class 'dict'>
>>> type(set())
<class 'set'>
>>> len(set())
0
>>>
字典 dict:
key 关键字 value 关键字的值
很多个key 和 value 构成 ,集合类型,不是序列,无序
定义:{key1:value1,key2:value2.....}
>>> type({1:1,2:2,3:3})
<class 'dict'>
>>>
>>> {'Q':'新月打击','Q':'苍白之瀑','E':'月之降临','R':'月神冲刺'}
{'Q': '苍白之瀑', 'E': '月之降临', 'R': '月神冲刺'} 没有重复
>>>
>>> {'Q':'新月打击','W':'苍白之瀑','E':'月之降临','R':'月神冲刺'}['Q']
'新月打击'
>>> {'Q':'新月打击','W':'苍白之瀑','E':'月之降临','R':'月神冲刺'}['R']
'月神冲刺'
>>> {'Q':'新月打击','W':'苍白之瀑','E':'月之降临','R':'月神冲刺'}[0] 出错:字典无序
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
{'Q':'新月打击','W':'苍白之瀑','E':'月之降临','R':'月神冲刺'}[0]
KeyError: 0
字典中value 可以取任意数据类型
key不能任意类型,必须遵循不可变??类型: int 、str
>>> {[1,2]:'新月打击','1':'苍白之瀑','E':'月之降临','R':'月神冲刺'} key不可以是列表
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
{[1,2]:'新月打击','1':'苍白之瀑','E':'月之降临','R':'月神冲刺'}
TypeError: unhashable type: 'list'
>>>
>>> {(1,2):'新月打击','1':'苍白之瀑','E':'月之降临','R':'月神冲刺'} key可以是元祖
{(1, 2): '新月打击', '1': '苍白之瀑', 'E': '月之降临', 'R': '月神冲刺'}
>>>
“不接受任何批评!”(欢迎指正!!!)