切片

在Python基础篇里,我们知道Python的可序列对象可以通过索引号(下标)来引用对象元素,索引号可以由0开始从左向右依次获取,可以从-1开始由右向左获取。这种方法可以帮助我们依次获取我们想要的元素。而切片可以帮助我们获取被切片元素的副本。

可序列对象切片时所需要的参数[start_index:stop_index:step]

start_index:切片的起始位置

stop_index:切片的结束为止(不包括)

step:步长,可选参数。默认值是1,但不能为0.表示依次递增。

假设testList=[1,2,3,4,5,6,7,8,9]
操作
解释 输出
print(testList)
打印测试列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(testList[:])
输出列表中所有元素 [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(testList[1:7:2])
从第二个开始,到第8个元素(不包含),每次间隔2个元素 [2,4,6]

print(testList[:5])

 从第一个开始,到第6个(不包含),默认间隔1个元素  [1,2,3,4,5]
 print(testList[-5:])  从右往左第五个开始至最后一个元素结束,默认间隔1个元素  [5,6,7,8,9]
print(testList[::2]) 从第一个开始,到最后一个结束,每次间隔2个元素 [1,3,5,7,9]
print(testList[::-1]) 从第一个开始,至最后一个结束,倒序间隔一个元素 [9, 8, 7, 6, 5, 4, 3, 2, 1]
testList[1:2]=['a']
print(testList)
 从第2个元素开始,第三个元素结束(不包含),插入并替换该区间元素  [1, 'a', 3, 4, 5, 6, 7, 8, 9]
del testList[1]
print(testList)
 删除第二个元素,请注意,这时只是从原来对象中的副本中删除后重新获取一个新的引用对象。  [1, 3, 4, 5, 6, 7, 8, 9]

del testList[1::2]

 从第二个元素开始删除对象元素,至最后一个元素结束,每次间隔2个  [1, 3, 5, 7, 9]

迭代

在开发语言中,遍历获取可序列对象我们称之为迭代。Python中,不仅可以像其他语言一样迭代可序列对象还可以迭代任意可序列化对象。例如 字典,字符串,元祖

案例
解释 输出
testList=[1,2,3]
for i in testList:
print(i)
迭代列表

1

2

3

testStr='hello'
for i in testStr:
print(i)
迭代字符串

h

e

l

l

o

testDic={'name':'zhangsan','age':18}
for i in testDic:
print(i)
循环字典,默认输出key

name

age

判断一个元素是否可以被迭代

在Python中可以通过collections模块的Iterable类型判断元素是否可以被迭代,当元素允许被迭代时返回True,反之返回False

from collections import Iterable
案例 解释 输出
 a=isinstance('abc',Iterable)
print(a)
 判断字符串(python中'a'也将作为字符串"a")使用 True
 testList=[1,2,3]
a=isinstance(testList,Iterable)
print(a)
 判断列表 True
 testDict={'name':'zhangsan','age':18}
a=isinstance(testDict,Iterable)
print(a)
 判断字典 True
 testTuple=(1,2,3)
a=isinstance(testTuple,Iterable)
print(a)
 判断元祖 True
 testInt=123
a=isinstance(testInt,Iterable)
print(a)
 判断数值 False

列表生成式

Python中列表生成式不仅可以迭代输出对象元素,还可以简化我们的代码。

例如 我们需要得到10以内n*n

for循环

列表生成式  
l=[]
for x in range(1,11):
l.append(x*x)
print(l)
n=[x*x for x in range(1,11)]
print(n)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表生成式与if条件一起使用

仅输出能被2整除的数
for 循环
列表生成式 输出
l=[1,2,4,5,6,7,8,9]
k=[]
for i in l:
if i %2==0:
k.append(i)
print(k)
l=[1,2,4,5,6,7,8,9]
n=[x for x in l if x%2==0 ]
print(n)
[2,4,6,8]

列表生成式与字典一起使用

for循环 列表生成式 输出
testDict={'name':'zhangsan','age':18}
for n in testDict:
print(n+'=:'+str(testDict[n]))
testDict={'name':'zhangsan','age':18}
b=[ k +'=' +str(v) for k ,v in testDict.items()]
print(b)
name=:zhangsan
age=:18

['name=zhangsan', 'age=18']

Python学习之高级特性的更多相关文章

  1. python学习之高级特性:

    切片:对列表.元组.字符串.字典取中间的一部分,在C中一般是通过for循环拷贝/memcpy/strcat等操作.而python提供了更方便的切片操作符[m:n]:前闭后开,如果从0取m可以省略:如果 ...

  2. Python面向对象编程高级特性

    ***这里还是根据网上资料,主要是廖雪峰老师的教程学习的笔记,主要介绍python面向对象的高级特性,笔记不全,只是记录自己觉得容易出错的地方*** 1.python作为一种动态语言,他的动态绑定机制 ...

  3. Python:笔记(4)——高级特性

    Python:笔记(4)——高级特性 切片 取一个list或tuple的部分元素是非常常见的操作.Python提供了切片操作符,来完成部分元素的选取 除了上例简单的下标范围取元素外,Python还支持 ...

  4. Python的一些高级特性

    内容基本上来自于廖雪峰老师的blog相当于自己手打了一遍,加强加强理解吧. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493 ...

  5. python学习2—python3特性与各种运算符

    python学习2—python3特性与各种运算符 python3与python2相比具有的新特性 在python2中可以使用__future__模块调用python3的特性 print()函数必须带 ...

  6. Python的一些高级特性以及反序列化漏洞

    0x01 简述 文章主要记录一下python高级特性以及安全相关的问题 python作为脚本语言,其作为高级语言是由c语言开发的,关于python的编译和链接可以看向这里https://github. ...

  7. php面向对象编程学习之高级特性

    前几天写了一篇关于php面向对象基础知识的博客,这两天看了php面向对象的高级特性,写出来记录一下吧,方便以后拿出来复习. 面向对象除了最基本的定义类之外,最主要就是因为面向的一些高级特性,运用这些高 ...

  8. Python学习之高级数组(一)

    1.Python基础学习之高级数组(一) 1.1视图:就是与较大数组共享相同数据的较小数组.Numpy包提供数据视图的概念是为了精确地控制内存的使用方式.  数组视图.切片视图.转置和重塑视图等 数组 ...

  9. python:函数的高级特性

    很多语言中,都允许把函数本身做为参数,传递给其它参数:即所谓的高阶函数.python中也有类似特性: 一.map/reduce.filter.sorted hadoop里的map-reduce思想在p ...

随机推荐

  1. css画扇形按钮

    最近项目中需要制作一个扇形按钮,效果是这样的: 周围四个扇形,和中间的小圆,全是能点击的.这就需要画扇形.百度了一下,有很多文章讲了如何生成扇形,最后我借鉴了一个最简单的实现方式,使用css的clip ...

  2. 在 CentOS7 上安装 swftools

    1.从官网下载 swftools,这里下载的是 0.9.2 版本: wget http://www.swftools.org/swftools-0.9.2.tar.gz 2.下载后得到 swftool ...

  3. JQ的事件绑定

    一.事件的绑定:可以添加多个同类事件 $("").click(function(){ }) $("").on(事件名,函数) $("").o ...

  4. 零基础逆向工程35_Win32_09_临界区_CRITICAL_SECTION结构

    1 引入 为什么会存在临界区这中机制呢?是为多线程同时访问全局变量而引入的.也就是上一篇帖子的末尾流出的问题程序的解决办法. 看懂了上面的,那么我们再罗嗦总结一下: 1.多线程访问全局变量时,存在线程 ...

  5. $.ajax显示进度条

  6. poi读取excel的辅助类

    补充:对于这个工具已经转为一个工程项目,采用的是saxreader方式,支持大数据文件的读取.具体可以参照  github上的源码,使用可以简单参照wiki.项目wiki地址https://git.o ...

  7. CSS 属性之中经常出现的百分比(转)

    CSS 的属性值中经常会出现百分比,搞清它们的基数是一件很重要的事情.我特意查看了一下 W3C 的 CSS2.1 标准,在此整理下: 百分比单位 乘以包含块的宽度 margin, padding, l ...

  8. C#设计模式--适配器模式(结构型模式)

    一.适配器模式介绍: 适配器模式:将一个类的接口,转换成客户希望的另外一个接口.adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 例子分析(充电器充电): 模式中的角色: 安 ...

  9. ABAP和Java SpringBoot的单元测试

    ABAP 在ABAP类里,本地类(Local Class)里用关键字FOR TESTING声明过的方法, 在单元测试启动后会自动被调用到. Spring Boot 在Spring及Spring Boo ...

  10. selenium安装及官方文档

    selenium-python官方文档: https://selenium-python.readthedocs.io/ python3.5已安装的情况下,安装示意图如下 命令行输入 pip3 ins ...