专栏首页香菜聊游戏一文搞清楚python混乱的切换操作和优雅的推导式

一文搞清楚python混乱的切换操作和优雅的推导式

因为工作中不怎么使用python,所以对python的了解不够,只是在使用的时候才去学,在之前的几个例子中几乎没使用什么python的特有语法,本着完成任务优先的原则也没有深入,但是在阅读别人的代码的时候发现有些特有语法不是很熟悉,搞不清代码的真正意思,今天就搞清楚切片和推导式的使用,OK。我们开始吧

记忆点:正向的时候第一个是0,负向的时候第一个是-1,可以把列表当做一个换,正向的是1 ,负向的 是-1,0 是中间点

1、混乱的切片操作

一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step),当只有一个“:”时,默认第三个参数step=1。

切片操作基本表达式:object[start_index : end_index : step]

step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以增量1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情说三遍!

start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始。

end_index:表示终止索引(不包含该索引本身);该参数省略时,表示一直取到数据”端点“,至于是到”起点“还是到”终点“,同样由step参数的正负决定,step为正时直到”终点“,为负时直到”起点“。

一句话,最后的step 决定了方向,从startIndex 到end_index 截取。

举个例子:

l = [1,2,3,4,5,6,7,8,9]
# 1、单个索引
print(l[2])
# 2、两个索引,正向
l2 = l[1:3]
print(l2)
# 3、两个索引,反向
l3 = l[1:3:-1]
print(l3)
l4 = l[-1:-3:-1]
print(l4)

2、优雅的推导式

# 列表推导式的语法格式如下:
# [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]


# ==>  for 迭代变量 in 可迭代对象
#          表达式

一句话总结:结果是什么类型是外面的括号表示,后面的for之前的语句在遍历的时候运行

举个例子:

# 计算表达式得到的一系列值组成一个列表。

list = [i for i in range(10) if i > 3]
print(list)
dict_b = {key: key * key for key in range(6)}
print(dict_b)
set_a = {value for value in '有人云淡风轻,有人负重前行'}
print(set_a)

3、总结

切片和推导式是python中常用的语法,如果能灵活运用可以用来装逼,也可以让代码简洁一些

常规福利

本文分享自微信公众号 - 香菜聊游戏(gamWatcher),作者:香菜聊游戏

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你熟悉Python的代码规范吗?如何一键实现代码排版

    首先,各个编程语言都有自己的代码规范,统一的代码规范,不仅能提高代码的可读性,还能提升代码的维护性,团队内部的集成也会更加顺畅,同时也能更轻易发现代码的问题。

    吾非同
  • 数据分析师,岗位真相最全解析!

    很多同学希望加入数据之路,很多同学想在数据之路上更上一层楼。可是,你真的知道,企业口中的“数据分析师”是啥玩意吗?有经验的老鸟都切身体会过,在数据分析师的名字下...

    接地气的陈老师
  • Effictive python学习总结连载(1)

    python从读研开始就在用了,拿来做过web后台、安全分析、爬虫、测试框架等等,挺强大的。最近借放假和看书和整理的机会,系统的总结下。主要是2方面:一个是书或...

    J_J
  • 走进JavaWeb技术世界9:Java日志系统的诞生与发展

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • 走进JavaWeb技术世界9:Java日志系统的诞生与发展

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • mac下自动切换输入法

    长久以来,输入法一直是困扰mac用户的一个问题;不过随着国内厂商的跟进,这种状况得到了极大的改善。不用自己去折腾什么鼠须管了,狼厂和企鹅都做的不错。

    weishu
  • 2019 最新 Java 核心技术教程,都在这了!

    以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,会从以下几个方面汇总,本文会长期更新。

    Java技术栈
  • 你阅读源码的心态是什么?有哪些经验分享?

    以上种种,也许还有一些其它重要的原因,比如说qiong ... 一直以来让我非常非常有内驱力的坚持到现在。

    数据仓库践行者
  • 编程的智慧特点

      编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋...

    用户1289394
  • len(x) 击败 x.len(),从内置函数看 Python 的设计思想

    它们预先定义在内置命名空间中,开箱即用,所见即所得。Python 被公认是一种新手友好型的语言,这种说法能够成立,内置函数在其中起到了极关键的作用。

    Python猫
  • 约瑟夫问题与魔术(三)——终极数学推导

    今天我们接着上期的问题分析把整个过程的数学细节都描绘下来,注意今天的描绘的粒度是每一次对整个序列的遍历,而第一篇描述的时候是每一次行动。但是,这次更加粗粒度的角...

    magic2728
  • 深度思考编程的艺术

    三哥
  • 解决 Django 多进程下,logging 记录日志错乱问题

    之前写过一篇文章 Django 中如何优雅的记录日志,本以为代码上线之后,就可以愉快的看日志,通过日志来分析问题了,但现实总是跟想象不同,两个异常现象纷纷挥起大...

    AlwaysBeta
  • len(x) 击败 x.len(),从内置函数看 Python 的设计思想

    除了纯粹的数学和魔术,程序员也是本公众号服务的群体之一,他们大量的需要来自数学理性和魔幻艺术的滋养才能创作出更好的程序艺术品。本文以python中对象方法还是通...

    magic2728
  • 几种计算机语言的评价(修订版)

    编程新手都有一个同样的问题:"我应该学习哪一种语言?"。 《Unix编程艺术》(Eric Raymond著)第十四章,对各种语言进行了评价,正好可以用来回答这个...

    ruanyf
  • 编程的智慧

    编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然...

    老钱
  • Python开发的10个小贴士

    下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。

    哲洛不闹
  • 深度学习框架如何选?4大场景对比Keras和PyTorch

    对于许多科学家、工程师和开发人员来说,TensorFlow是他们的第一个深度学习框架。但indus.ai公司机器学习工程师George Seif认为,TF并不是...

    新智元
  • 『互联网架构』软件架构-java日志体系(17)

    简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。

    IT架构圈

扫码关注云+社区

领取腾讯云代金券