分享

系列|七天PYTHON养成记之序列

 F2967527 2020-07-07

◆ ◆ ◆  ◆ 

列表的创建方式



1. 用[ ]创建列表
a = [1,2,3]display(a)

结果如下:

2. 用list()函数创建列表

b = list('abcd')display(b)

结果如下:

3. 用range()函数创建整数列表
c = list(range(10))display(c)
结果如下:

4. 用列表推导式创建列表
d = [i for i in range(10)]display(d)
结果如下:

5. 用list()函数和[ ]创建空列表
e = list()display(e)f = []display(f)
结果如下:


列表中添加元素


1. append():真正的在列表尾部添加元素,速度最快,推荐使用
a = [3,1.43,True,'哈哈']b = []display(id(b))for i in a:    b.append(i)display(b)display(id(b))
结果如下:

综上所示:我们发现在列表尾部添加元素后,b的存储地址前后并没有改变,属于原地操作列表,这样的话对内存的开销较小。

2. extend()方法:将一个列表的元素,添加到另外一个列表元素的尾部

a = ['我很好',4,5,6]b = [1,2,3,'嘿嘿']display(b)display(id(b))b.extend(a)display(b)display(id(b))
结果如下:

3. 下面这些知识点要注意使用

  • insert()、remove()、pop()、del()在涉及大量元素时,尽量避免使用。因为,这些操作会让列表元素进行大面积移动,影响处理速度。

  • 使用'+'、'*'这样的操作符扩展列表,也会使得列表存储地址前后发生改变,属于创建了新列表,增加了内存。在涉及大量元素时,不建议使用。



列表中元素排序

1. sorted(x)函数

a = [20,10,40,30]display(id(a))b = sorted(a)display(b)display(id(b))
结果如下:

2. x.sort()方法

c = [50,10,100,30]display(id(c))c.sort()display(c)display(id(c))
结果如下:


3. 分析比较
  • sorted()函数属于python内置函数,sort()函数属于列表对象中的一个方法。

  • x.sort()属于原地修改列表的排序方法,sorted(x)属于建立新列表的排序方法。

  • x.sort()由于是原地修改列表的排序方法,因此不能用其他变量去接收排序结果,sorted(x)属于建立新列表的排序方法,因此需要创建一个新的变量接收这个变量。

字典的创建方式


1. 直接使用{ }创建字典
a = {'name':'张三','age':18,'job':'teacher'}display(a)

结果如下:

2. 使用dict()函数创建字典

b = dict(name='黄伟',age=18,job='teacher')display(b)c = dict([('name','黄伟'),('age',18),('job','teacher')])display(c)

结果如下:

3. zip()函数:利用两个列表创建字典

list1 = ['name','age','job']list2 = ['黄伟',18,'teacher']d = dict(zip(list1,list2))display(d)

结果如下:

4. 使用{ }和dict()创建空字典

e = {}display(e)f = dict()display(f)

结果如下:

5. 使用fromkeys()函数创建值为空的字典

list1 = ['name','age','job']g = dict.fromkeys(list1)display(g)

结果如下:

字典的访问方式

1. get():强烈推荐的字典键值访问方式
a = {'name':'张三','age':18,'job':'teacher'}display(a)display(a.get('name'))display(a.get('weight'))

结果如下:

2. items():获取字典中的键值对

a = {'name':'张三','age':18,'job':'teacher'}display(a)display(a.items)for i in a.items():print(i)

结果如下:

3. keys():获取字典中所有的键

    values():获取字典中所有的值

a = {'name':'张三','age':18,'job':'teacher'}display(a)display(a.keys())display(a.values())

结果如下:

'+'与'join'拼接字符串比较

import timet1 = time.time()s = ''for i in range(1000000): s += '哈哈't2 = time.time()display('用时:' + str(t2-t1))t3 = time.time()l = []for i in range(1000000): l.append('哈哈')m = ''.join(l)t4 = time.time()display('用时:' + str(t4-t3))

结果如下:

综上所述:字符串进行拼接时,推荐使用'join',少用'+'。

字符串驻留机制

1. 字符串驻留机制的含义
  • Python支持字符串驻留机制,对于符合标识符的字符串(注意:仅仅包含下划线_、字母、数字),才会启用字符串驻留机制。此时,保存一份相同且不可变的字符串,不同的值被存在驻留池中,因此,它们还是同一个东西。

2. “is'和”=='的不同点
  • '=='用于判断两个对象的内容是否相同,只关注两个对象的值是否相等。

  • 'is'是用于判断两个对象的内存地址是否相同,真正判断两个对象是不是同一个对象。

  • 因此,is的要求更高,不仅要求值一样,同时还要求对象内存地址也是一样。

操作如下:

p = 'ab#'q = 'ab#'display(id(p),id(q))display(p == q)display(p is q)
结果如下:

3. 检测字符串驻留机制

m = '12_abv'n = '12_abv'display(id(m))display(id(n))display(m == n)display(m is n)p = 'ab#'q = 'ab#'display(id(p))display(id(q))display(p == q)display(p is q)
结果如下:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多