文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

从5个维度总结Python数据结构的关系,发现了这些技巧

2024-12-11 20:57

关注

区别

相同点

  1. 都相当于一个容器,有存放数据的功能
  2. 都可以用for ... in 进行循环

不同点

  1. 序列存放的是不同类型的数据,迭代器中存放的是算法。
  2. 序列是将数据提前存放好,获取数据时通过循环或索引来取数据 ;而迭代器不需要存放数据,获取数据时通过算法获取下一个数据 。
  3. 序列中的每一个数据都要开辟内存空间;而迭代器并不需要,它每次只需要通过算法计算出下一个值即可。从这个角度来看,如果进行大数据量处理,使用迭代器更合适 。
  4. 序列可以通过索引或键名来获取某一个值,而迭代器只能使用next()获取下一个值。

变化趋势

从左到右,可以试图找一些规律 。

以上不同的数据类型,也可以实现两者之间的相互转化,转化时只需要通过调用对应函数即可,如下图

下图是每种数据类型间的相互转化及具体实例。

通过以上的表格可以看出,数据类型可以进行相互转化,总结有以下几点:

转化为字典时必须要求是两个元素组合成一个元组才能进行转化 。那为了简便我们可以使用zip()将两个序列组成一个新的字典更加方便。

  1. # 通过zip将两个列表合并为一个序列,然后再转化为字典。 
  2. lst1 = ['x','y','z']            #可以是一个列表,元组,集合 
  3. lst2 = [123,234,345]             
  4. print(dict(zip(lst1,lst2)))          
  5. #输出: 
  6. {'x'345'y'234'z'123

通过str()进行转化后的数据虽然变成了字符串,但是我们更想的是把序列中的元素结合起来变为字符串 。那么可以通过join()方法将其内的元素变为想要的字符串。

  1. #语法: 
  2.     "sep".join(seq)  
  3. #实例: 
  4.     x = "".join({'a':123,'b':345}) 
  5.     print("x:",x) 
  6.     y = ",".join(['java','python','c++']) 
  7.     print("y:",y) 
  8.     z = "_".join(("tuple","demo","01")) 
  9. #输出: 
  10.     x: ab 
  11.     y: java,python,c++ 
  12.     z: tuple_demo_01 
  13. #说明: 
  14.     sep为分隔符,seq序列 

便捷式写法-推导式

在以上的数据结构中,部分数据类型同样支持推导式,推导式是可以将一个可迭代对象构建成新的可迭代对象的表达式结构体 。通过推导式可以快速实现出一个新的序列或生成器 ,也可以让代码更加优雅和快捷 。

为了更加直观,我们可以一张图来总结不同数据类型所支持的推导式。我们只需要记住推导式的433.

字典推导式

  1. #语法: 
  2.     { for key,value in dict condition } 
  3. #实例: 
  4.     d = {'chinese'88'math'92'english'93'history'84
  5.     print("成绩大于90分的科目:", {k: '优秀' for k, v in d.items() if v >= 90}) 
  6. #输出 
  7.     成绩大于90分的科目: {'math''优秀''english''优秀'
  8. #说明: 
  9.     for循环后的表达式可以是条件表达式或者循环表达式,主要是进行筛选或嵌套循环 
  10.     返回结果是一个根据表达式运算后生成出来的新字典 。 

集合推导式:

  1. #语法: 
  2.     { for x in set condition } 
  3. #实例 
  4.     s = {x**2 for x in [123]} 
  5.     print("集合s:",s) 
  6. #输出:  
  7.     集合s: {149

列表推导式

  1. #语法: 
  2.     [ operation(x) for x in list condition ] 
  3. #实例 
  4.     print([random.randint(1,10)+x for x in range(0,10if x % 2 == 0]) 
  5. #结果: 
  6.     [33141512
  7. #说明: 
  8.     #对列表推导式常使用的几种用法 
  9.     用法1:[x for x in iterable ]                  #循环后直接打印 
  10.     用法2:[x for x in iterable if condition(x) ]  #对x的条件判断 
  11.     用法3:[operation(x) for x iterable if condition(x)]  #对x条件判断后,再对x进行运算 
  12.     用法4: [operation(x,y) for x in iterable for y in iterable1] #嵌套循环,对x,y进行运算 

生成器推导式

  1. #语法: 
  2.     ( operation(x) for x in iterable condition ) 
  3. #实例 
  4.     print((random.randint(1,10)+x for x in range(0,10if x % 2 == 0)) 
  5. #结果: 
  6.      at 0x02FDC420
  7. #说明: 
  8.     新生成的生成器可以使用for循环,也可以next()获取其下一个值 

组合用法

以上数据结构除了可以作为容器使用,也可以它们结合起来使用,以用作其它用途 。比如可以用作条件语句。为了直观,我们先写一个简单的if语句。

  1. score = 92 
  2. if score >= 90
  3.     print('优秀'
  4. else
  5.     print('良好'
  6. #输出:优秀 

接下来,我们就通过以下这三种方式来重新定义条件语句。

第一种,使用()+[]来实现条件判断

  1. #语法: 
  2.     ()[condition_expression] 
  3. #实例: 
  4.     score = 92 
  5.     print(('良好','优秀')[ score >= 90 ]) 
  6. #结果: 
  7.     优秀 
  8. #说明: 
  9.     在[]中写条件语句,在()中写返回为真和返回为假的值。一定要注意顺序,()在前,[]在后 

第二种,使用{}+[]来实现条件判断

  1. #语法: 
  2.     {True: , False: }[
  3. #实例: 
  4.     score = 92 
  5.     print({True:'优秀',False:'良好'}[ score >= 90 ]) 
  6. #结果: 
  7.     优秀 
  8. #说明: 
  9.     在[]中写条件语句,在()中写返回为真和返回为假的值,一定要注意顺序 

第三种,对字符串进行条件判断 ,需要用到eval方法。

  1. #语法: 
  2.     eval("字符串判断语句"
  3. #实例 
  4.     print('优秀' if eval("score >= 90"else '良好'
  5. #结果 
  6.     优秀 

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯