Python数据类型入门
出于兼容问题考虑, 建议您在PC端阅读此文, 以获得最好的阅读体验。
# 内置的原子数据类型
Python有两个主要的内置数字类,它们实现了整型和浮点数据类型。这些Python类称为int和float。标准的算术运算,+,-,*,/,和**(取幂),可以用括号强制操作的顺序来规避正常的操作符优先级。其他很有用的操作是余数(模组)操作符%、和整数除法//。
注意,当两个整数相除,结果是一个浮点数。整数除法运算符通过截断所有小数部分来返回商的整数部分。
>>> 5 // 2
2
>>>
# 内置的集合数据类型
除了数字和布尔类之外,Python还有许多非常强大的内置集合类。列表、字符串和元组是有序集合,它们在常用的结构中非常相似,但是有特定的差异,必须理解它们才能正确使用。集合和字典是无序的集合。
# 有序的集合类型
Python序列的操作:
注意,列表(序列)的索引从0开始计数。切片操作,myList[1:3],返回一个包含索引从1到3的项的列表、但不包含索引为3的项。
这可以通过使用重复操作快速完成。例如,
>>> myList = [0] * 6
>>> myList
[0, 0, 0, 0, 0, 0]
除了重复操作符之外,还有一个非常重要的问题是其结果是对序列中的数据对象的引用的重复。通过思考以下代码得到最好的印证:
myList = [1,2,3,4]
A = [myList]*3
print(A)
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
myList[2]=45
print(A)
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]
变量A持有三个名为myList的原始列表的引用。注意,对myList的一个元素的更改,在A的所有三种情况中都体现了出来
# 列表(list)
列表支持许多用于构建数据结构的方法:
myList.append(False)可以被认为是“请求对象myList执行它的append方法,并将其发送给False”。即使是像整数这样的简单数据对象也可以以这种方式调用方法。
>>> (54).__add__(21)
75
>>>
range函数产生一个范围对象,表示一系列的值。通过使用list函数,我们可以将range对象的值看作一个列表。
>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 字符串
由于字符串是序列,所以上面描述的所有序列操作都适用于字符串。
>>> myName = "Andy"
>>> myName[3]
'y'
>>> myName*2
'AndyAndy'
>>> len(myName)
4
另外,字符串有许多方法,其中一些方法,例如:
>>> myName.upper()
'ANDY'
>>> myName.center(10)
' Andy '
>>> myName.find('d')
2
>>> myName.split('d')
['An', 'y']
其中,split对于处理数据非常有用。split将使用一个字符串,并使用分割字符作为分隔点返回字符串列表。在这个例子中,d是分隔点。如果没有指定分隔点,split方法会寻找空格字符,如制表符、换行符和空格。
列表和字符串之间的主要区别是,列表可以被修改,而字符串不能。这被称为可变性。列表是可变的;字符串是不可变的。例如,您可以通过使用索引和赋值来更改列表中的项。任何一个改变是不允许的。
>>> myList = [1, 3, True, 6.5]
>>> myList[0] = 2**10
>>> myList
[1024, 3, True, 6.5]
>>>
>>> myName
'Andy'
>>> myName[0] = 'J'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>
# 元组(tuple)
元组与列表非常相似,因为它们是异构的数据序列。不同之处在于,元组是不可变的,就像字符串一样。任何元组都不能被改变。
>>> myTuple = (2,True,4.96)
>>> myTuple[1]=False
Traceback (most recent call last):
File "<pyshell#137>", line 1, in -toplevel-
myTuple[1]=False
TypeError: object doesn't support item assignment
>>>
# 无序的集合类型
# 集合
set是一个无序的, 为空或是更多不可变Python数据对象集合。集合中的值不允许重复,以逗号分隔,写在大括号中。空集合由set()表示。集合是异构的并且可以被分配给一个变量,如下所示。
>>> {3,6,"cat",4.5,False}
{False, 4.5, 3, 6, 'cat'}
>>> mySet = {3.6, 'andy', 4.5, False}
>>> mySet
{'andy', False, 3.6, 4.5}
>>>
集合支持的一些操作:
>>> mySet
{'andy', False, 3.6, 4.5}
>>> len(mySet)
4
>>> 'andy' in mySet
True
>>>
集合支持许多方法,这些方法对于在数学集合中使用它们的人来说应该是熟悉的。 它们的使用示例如下。 请注意,联合,交集,子集和差分都有可以使用的运算符。
>>> mySet
{'andy', False, 3.6, 4.5}
>>> yourSet = {1, 2, 3.6, 'cat'}
# 联集
>>> mySet.union(yourSet)
{False, 1, 2, 3.6, 4.5, 'andy', 'cat'}
>>> mySet | yourSet
{False, 1, 2, 3.6, 4.5, 'andy', 'cat'}
# 交集
>>> mySet.intersection(yourSet)
{3.6}
>>> mySet & yourSet
{3.6}
# 差集
>>> mySet.difference(yourSet)
{'andy', False, 4.5}
>>> mySet - yourSet
{'andy', False, 4.5}
# 子集
>>> {1, 2}.issubset(yourSet)
True
>>> {1, 2} <= yourSet
True
# 添加元素
>>> mySet.add('dog')
>>> mySet
{False, 3.6, 4.5, 'dog', 'andy'}
# 删除元素
>>> mySet.remove(4.5)
>>> mySet
{False, 3.6, 'dog', 'andy'}
# 随机弹出一个元素
>>> mySet.pop()
False
>>> mySet
{3.6, 'dog', 'andy'}
# 清空集合
>>> mySet.clear()
>>> mySet
set()
>>>
# 字典
字典是一组关联项,其中每一项由一个键和一个值组成。这个键-值对通常被写成key:value。字典的键值对以逗号分隔并用花括号括起来。例如,
>>> capitals = {'China': 'Beijing', 'America': 'Washington D.C.'}
>>> capitals
{'China': 'Beijing', 'America': 'Washington D.C.'}
>>>
字典的操作符(Operator)
>>> capitals
{'China': 'Beijing', 'America': 'Washington D.C.'}
# 通过键来访问值
>>> capitals['China']
'Beijing'
# 添加值
>>> capitals['England'] = 'London'
>>> capitals
{'China': 'Beijing', 'America': 'Washington D.C.', 'England': 'London'}
# 返回长度
>>> len(capitals)
3
# 迭代, 取出的i是capitals中的键, capitals[i]就是对应的值
>>> for i in capitals:
... print(capitals[i], "is the capital of ", i)
Beijing is the capital of China
Washington D.C. is the capital of America
London is the capital of England
# 删除
>>> del capitals['England']
>>> capitals
{'China': 'Beijing', 'America': 'Washington D.C.'}
>>>
字典的方法(Method)
>>> order = {'Tom': 6666, 'Jerry': 8888}
>>> order
{'Tom': 6666, 'Jerry': 8888}
# 输出键
>>> order.keys()
dict_keys(['Tom', 'Jerry'])
# 将输出的键转为列表类型
>>> list(order.keys())
['Tom', 'Jerry']
# 输出值
>>> order.values()
dict_values([6666, 8888])
# 将输出的值转为列表类型
>>> list(order.values())
[6666, 8888]
# 输出键值对儿,每一对儿是一个元组
>>> order.items()
dict_items([('Tom', 6666), ('Jerry', 8888)])
# 将输出的键值对儿转为列表类型
>>> list(order.items())
[('Tom', 6666), ('Jerry', 8888)]
# 在字典中查找,若不存在,则返回 -1
>>> order.get('Andy', -1)
-1
>>>
# 评论交流
- 可以在下方回复
- QQ 1739046583
- QQ 交流群 :建设中...
最后,如果你觉得笔记对你有帮助,不妨赞赏一杯可乐😅