Python学习日志20.3.14

1、Python中常用的复合数据结构有str、tuple、list、set、dict等。除了dict和set外,其他均支持双向索引
2、列表方法
list.append(x) 将元素x添加到列表尾部
list.extend(L) 将列表L中所有元素添加至列表尾部
list.insert(index,x) 在列表指定位置index处添加元素x
list.remove(x) 在列表中删除首次出现的元素x
list.pop([index])在列表中删除并返回指定位置的元素
list.clear()删除列表中所有元素但保留列表对象,该方法在Python2中没有
list.index(x)返回列表中首个元素x的下标
list.count(x)返回指定元素x在列表中的出现次数
list.reverse()对列表元素进行原地逆序
list.sort()对列表元素进行原地排序
list.copy()返回列表对象的浅拷贝,该方法Python2中没有
3、区分赋值、浅拷贝、深拷贝

>>> import copy
>>> testlist = ['hello',1,[1,2,3]]
>>> a = testlist
>>> b = testlist.copy()
>>> c = copy.deepcopy(testlist)
>>> id(testlist)
52485288
>>> id(a)
52485288
>>> id(b)
62491944
>>> id(c)
62491784

与赋值不同,浅拷贝、深拷贝都创建了一个新的list类型的对象

>>> testlist[0] = 'helloworld'
>>> testlist[2].append(4)
>>> a
['helloworld', 1, [1, 2, 3, 4]]
>>> b
['hello', 1, [1, 2, 3, 4]]
>>> c
['hello', 1, [1, 2, 3]]

对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)
当列表元素发生变化时,由于str是不可变元素,‘hello’改为’helloworld’时testlist[0]的地址发生了变化,而原来地址上得内容不变,所以b[0]不变;对testlist[2]修改时地址不变,地址上的内容改变,所以b[2]发生变化。
而对于对象中的元素 ,深拷贝时都会重新生成一份,所以改变testlist时c不会发生变化。

>>> id(testlist[0])
62289464
>>> id(a[0])
62289464
>>> id(b[0])
62284448
>>> id(c[0])
62284448

4、list函数
可以用list函数对元组,字符串,range对象或其他可迭代对象通过返回值的形式获得列表

>>> a = list((1,2,3,4))
>>> a
[1, 2, 3, 4]

5、range函数
语法:range(start,stop,step)
结果中不包含stop
6、del命令
del命令删除的是变量,而不是数据
使用del删除整个列表时,如果列表对象指向的值不再有其他对象指向,Python将同时删除该值
7、列表元素的增加减少
使用 +或** 运算符,严格意义上来说是创建了一个新的列表对象
//需要注意的是,使用*运算符重复并创建含有 列表的列表的新列表时,并不创建元素的复制,而是创建已有对象的引用。因此,当修改其中一个值时,相应的引用也会修改。

>>> x = [[None,None]]
>>> x *=3
>>> x[0][0] = 5
>>> x
[[5, None], [5, None], [5, None]]

使用append()、extend()等方法,原地修改列表
在列表中增删元素应尽量在列表尾部,因为增删操作会影响到该位置后面所所有元素的下标,这会影响运行速度
8、time函数
需要导入time模块
time.time()返回当前时间的时间戳(1970纪元后经过的浮点秒数)
如何获得当前时间?

>>> import time
>>> howlong = time.time()
>>> print(howlong)
1584198744.9594789
>>> now = time.localtime(time.time())
>>> print(now)
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=14, tm_hour=23, tm_min=13, tm_sec=9, tm_wday=5, tm_yday=74, tm_isdst=0)
>>> print(time.asctime(now))
Sat Mar 14 23:13:09 2020

localtime和asctime函数中的参数可以不写

>>> print(time.asctime())
Sat Mar 14 23:17:37 2020
>>> print(time.localtime())
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=14, tm_hour=23, tm_min=18, tm_sec=6, tm_wday=5, tm_yday=74, tm_isdst=0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值