Python中的基本数据类型与常用方法

Python中的所有的数据结构都是对象,熟悉常见的操作方法非常重要,以下罗列了Python中基本数据结构的相关操作方法:

二元运算符和操作符

基本的+、-、*、/就不罗列了,列一些特殊的。

运算说明
a//ba整除b,例:3//2 ==1
a**ba的b次幂,例:2**3==8
a&b逻辑判断,若值为整数就是转成二进制后的AND运算
a|b逻辑判断,若值为整数就是转成二进制后的OR运算
a^b逻辑判断,若值为整数就是转成二进制后的E-OR运算
a is ba和b是否引用的为同一个对象,是True,反之False
a is not ba和b是否引用的为同一个对象,是False,反之True

字符串

字符串的本质就是一个字符数组,可以通过字符数组方法访问,这里要掌握也写切片原则(可自行查找)。

  • list()
>>> a = 'Hello World'
>>> b = list(a)
>>> b
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
  • encode()与decode
>>> val
'espanok'
>>> val_utf8=val.encode('utf-8')
>>> val_utf8
b'espanok'

日期和时间

日期和时间在进行时间序列建模的时候还是比较重要的,Python内建的datetime提供了datatimedatatime三个模块

>>> from datetime import datetime,time,date
>>> dt = datetime(2020,6,30,16,44,11)
>>> dt.day
30
>>> dt.minute
44
>>> dt.year
2020
>>> dt.date()
datetime.date(2020, 6, 30)
>>> dt.time()
datetime.time(16, 44, 11)
>>> dt.strftime('%m/%d/%Y %H:%M')
'06/30/2020 16:44'

日期格式化等具体数据结构:
Python datetime解释博客

控制流语句中

  • pass 占位符,防止编译报错
#不加pass就得报错
x = 1
if x<1:
    pass
elif x ==1 :
    print("Your Are Right")
else:
    pass
  • range 迭代器
>>>list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(0,20,2))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> list(range(10,3,-1))
[10, 9, 8, 7, 6, 5, 4]
  • zip 迭代器
>>>seq1 = ['foo','bar','bez']
>>>seq2 = ['app','lem','qux']
>>>zipped = list(zip(seq1,seq2))
>>>print(zipped)
[('foo', 'app'), ('bar', 'lem'), ('bez', 'qux')]

元组

  • count计算某元素在元组中出现的次数
>>> c=2,3,4,4,4,42
>>> c.count(4)
3

列表

  • list转化对象类型为列表,如前面的rangezip
  • append尾插法进行列表的扩充。
>>>c=2,3,4,5,6
>>>z = list(c)
>>>z.append(9)
>>>print(z)
[2, 3, 4, 5, 6, 9]
  • insert完成任意位置插入,与append相比,insert耗费的计算量大,因为对后续元素的引用必须在内部迁移,以便为新元素提供空间。如果要在序列的头部和尾部插⼊元素,可能需要使用collections.deque,⼀个双尾部队列。
>>>c=2,3,4,5,6
>>>z = list(c)
>>>z.insert(2,100)
>>>print(z) #前插,或者说提供插入后的位置
[2, 3, 100, 4, 5, 6]
  • popinsert返回一个从列表中弹出的值
>>>c=2,3,4,5,6
>>>z = list(c)
>>>print(z)
>>>d = z.pop(2)
>>>print(d)
>>>print(z)
[2, 3, 4, 5, 6]
4
[2, 3, 5, 6]
  • removeappend的逆操作
>>>c=2,3,4,5,6
>>>z = list(c)
>>>print(z)
>>>z.remove(4)
>>>print(z)
[2, 3, 4, 5, 6]
[2, 3, 5, 6]
  • 此外还可以用in这种关键字来检查列表中是否存在这个元素。
  • extend用来添加多个元素,使用extend方法要比串联的方法来进行列表的拼接要快
>>>x=[4, None, 'foo']
>>>x.extend([7,	8, (2, 3)])
>>>x
[4,	None,	'foo',	7,	8,	(2,	3)]
  • sortsorted这个函数的方法有很多,可以选择一定的关键字进行排序,也可以不加任何函数就可以实现数字整数的排序。具体可查看W3School的解释
  • enumerate用形成一个enumerate类,这个类会匹配一个数字和一个值,数字默认从0开始计算,我们可以用它来形成字典类很方便。
collection = ["foo","bar","baz","qux","nnc"]
c = list(enumerate(collection))
for i,value in enumerate(collection):
    print(i,value)
print(c)
#结果
0 foo
1 bar
2 baz
3 qux
4 nnc
[(0, 'foo'), (1, 'bar'), (2, 'baz'), (3, 'qux'), (4, 'nnc')]

生成字典的思路

mapping = {}
collection = ["foo","bar","baz","qux","nnc"]
for i,val in enumerate(collection):
    mapping[val] = i
print(mapping)
#结果
{'foo': 0, 'bar': 1, 'baz': 2, 'qux': 3, 'nnc': 4}
  • map方法,在Python3.x之后生成的就是一个迭代器,他的解释如下:
mapping = []
map(function, iterable, ...)
for value in map(lambda x,y:x+y,[1,2,3,4,5],[6,7,8,9,10]):
	mapping.append(value)
print(mapping)
#结果
[7, 9, 11, 13, 15]
  • reversed顾名思义列表逆置,这个就不写例子啦比较简单。

字典

  • del关键字和pop方法用来删除字典中的元素
mapping = {}
collection = ["foo","bar","baz","qux","nnc"]
for i,val in enumerate(collection):
    mapping[val] = i
del mapping["foo"]
result = mapping.pop("baz")
print(mapping)
print(result)
#结果
{'bar': 1, 'qux': 3, 'nnc': 4}
2
  • keysvalues是字典的两个迭代器方法,可以用字典的这两个属性来进行迭代。
mapping = {}
collection = ["foo","bar","baz","qux","nnc"]
for i,val in enumerate(collection):
    mapping[val] = i
print(list(mapping.keys()))
print(list(mapping.values()))
#结果
['foo', 'bar', 'baz', 'qux', 'nnc']
[0, 1, 2, 3, 4]
  • update方法搞定字典数据合并。
mapping = {}
diction = {}
collection = ["foo","bar","baz","qux","nnc"]
for i,val in enumerate(collection):
    mapping[val] = i
for i,val in zip(collection,range(len(collection))):
    diction[val] = i
mapping.update(diction)#diction和mapping不能完全一样不然失效
print(mapping)
#结果
{'foo': 0, 'bar': 1, 'baz': 2, 'qux': 3, 'nnc': 4, 0: 'foo', 1: 'bar', 2: 'baz', 3: 'qux', 4: 'nnc'}
  • get方法,与下面的方法等效:
if key in some_dict:
	value = some_dict[key]
else:
	value = default_value
#等效于
value = some_dict.get(key,default_value)
  • hash众所周知字典数据类型的底层算法原理是C语言编写的哈希表,他在添加和查找时首先要进行hash函数,将key转化成整数值,那么这个key必须能转换成整数值,这就要求键通常为不可变的标量类型,一般就是整型、浮点、字符串、元组,可以用hash函数来检索一个对象是否可以被哈希,或者说“可哈希性”。

集合

set就比较简单了,和前面的方法基本类似,但是值得注意的是他的一些代替算法,一些交并补运算的简便写法,这里就不再过多介绍可查看菜鸟教程上的集合介绍

  • 列表、集合、字典的过滤式或者说推导式是比较有趣的python特性
#		list_value = [express for val in collection if condition]
#  	 	dict_value = {keyexpr:val_expr for val in collection if condition}
#		set_value = {express for val in collection if condition}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值