一篇文章带你学习Python3的高级特性(1)

目录
  • 1.切片
  • 2.迭代
  • 3.列表生成式
  • 总结

1.切片

# 切片:取list或tuple的部分元素
nameList = ["Willard","ChenJD","ChenBao","ChenXiaoBao","hackerLuo"]
print("nameList的内容为:",nameList)
print("------------------------------------------------------------------------------")
# 传统方法取nameList前三个元素
print("nameList前三个元素:",[nameList[0],nameList[1],nameList[2]])
print("------------------------------------------------------------------------------")
# 使用切片取前三个元素,注:切片也是左闭右开
print("使用切片操作取nameList前三个元素:",nameList[0:3])
print("使用切片操作取nameList第二个到第四个元素:",nameList[1:5])
print("------------------------------------------------------------------------------")
print("------------------------------------------------------------------------------")
# 切片的一些常用操作
numsList = list(range(30))
print("数字列表内容为:\n",numsList)
print("------------------------------------------------------------------------------")
print("数字列表前10个数内容:",numsList[0:10])
print("数字列表前10个数内容:",numsList[:10])
print("\n")
print("数字列表后10个数内容:",numsList[-10:])
print("数字列表前11-20个数内容:",numsList[10:20])
print("数字列表前10个数每隔两个取一个:",numsList[0:10:2])
print("数字列表前10个数每隔两个取一个:",numsList[:10:2])
print("数字列表每隔3个数取一个:",numsList[::3])
print("数字列表内容:\n",numsList[:])
# Tips:
# 1.tuple可以使用切片操作,操作的结果仍是tuple;
# (0,1,2,3,4,5)[:3]  ===>  (0,1,2)
# 2.字符串使用切片操作,一个字符就是一个元素
# "Welcome to FUXI Technology."[:3]  ===>  "Wel"

# 结果输出:
nameList的内容为: ['Willard', 'ChenJD', 'ChenBao', 'ChenXiaoBao', 'hackerLuo']
------------------------------------------------------------------------------
nameList前三个元素: ['Willard', 'ChenJD', 'ChenBao']
------------------------------------------------------------------------------
使用切片操作取nameList前三个元素: ['Willard', 'ChenJD', 'ChenBao']
使用切片操作取nameList第二个到第四个元素: ['ChenJD', 'ChenBao', 'ChenXiaoBao', 'hackerLuo']
------------------------------------------------------------------------------
------------------------------------------------------------------------------
数字列表内容为:
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
------------------------------------------------------------------------------
数字列表前10个数内容: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
数字列表前10个数内容: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

数字列表后10个数内容: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
数字列表前11-20个数内容: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
数字列表前10个数每隔两个取一个: [0, 2, 4, 6, 8]
数字列表前10个数每隔两个取一个: [0, 2, 4, 6, 8]
数字列表每隔3个数取一个: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
数字列表内容:
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

2.迭代

# 给定一个list或tuple,通过for循环来遍历这个list或tuple,这种遍历称为迭代(iteration);# 迭代通过for...in来完成;# 实例1:迭代dictpersonInfoDict = {"name":"Willard","age":18,"job":"Engineer"}print("使用迭代读取dict内容!")print("personInfoDict的内容:",personInfoDict)print("------------------------------------------------------------------------------")# 读取personInfoDict的key值print("personInfoDict的key值:")for key in personInfoDict:    print(key,end = " ")print("\n")print("personInfoDict的value值:")for value in personInfoDict.values():    print(value,end = " ")    print("\n")print("personInfoDict的key-value值:")for item in personInfoDict.items():    print(item,end = " ")print("\n")print("------------------------------------------------------------------------------")print("------------------------------------------------------------------------------")# 实例2:迭代读取字符串userNameStr = "WillardLuo"print("使用迭代读取字符串内容!")print("userNameStr的内容:",userNameStr)print("------------------------------------------------------------------------------")print("userNameStr的每个元素为:")for word in userNameStr:    print(word,end = " ")# 给定一个list或tuple,通过for循环来遍历这个list或tuple,这种遍历称为迭代(iteration);
# 迭代通过for...in来完成;
# 实例1:迭代dict
personInfoDict = {"name":"Willard","age":18,"job":"Engineer"}
print("使用迭代读取dict内容!")
print("personInfoDict的内容:",personInfoDict)
print("------------------------------------------------------------------------------")
# 读取personInfoDict的key值
print("personInfoDict的key值:")
for key in personInfoDict:
    print(key,end = " ")
print("\n")
print("personInfoDict的value值:")
for value in personInfoDict.values():
    print(value,end = " ")
print("\n")
print("personInfoDict的key-value值:")
for item in personInfoDict.items():
    print(item,end = " ")
print("\n")
print("------------------------------------------------------------------------------")
print("------------------------------------------------------------------------------")
# 实例2:迭代读取字符串
userNameStr = "WillardLuo"
print("使用迭代读取字符串内容!")
print("userNameStr的内容:",userNameStr)
print("------------------------------------------------------------------------------")
print("userNameStr的每个元素为:")
for word in userNameStr:
    print(word,end = " ")

# 结果输出:
使用迭代读取dict内容!
personInfoDict的内容: {'name': 'Willard', 'age': 18, 'job': 'Engineer'}
------------------------------------------------------------------------------
personInfoDict的key值:
name age job

personInfoDict的value值:
Willard 18 Engineer

personInfoDict的key-value值:
('name', 'Willard') ('age', 18) ('job', 'Engineer')

------------------------------------------------------------------------------
------------------------------------------------------------------------------
使用迭代读取字符串内容!
userNameStr的内容: WillardLuo
------------------------------------------------------------------------------
userNameStr的每个元素为:
W i l l a r d L u o

# Tips:
# 1.使用for...in循环需要作用于一个可迭代对象;
# 2.判断一个对象是否是可迭代对象,可通过collections.abs模块的Iterable类型判断
from collections.abc import Iterable
nameStr = "WillardLuo"
nameList = ["Willard","ChenJD","ChenBao"]
numberTuple = (1,2,3,4,5)
personInfoDict = {"name":"Willard","age":18}
number = 100
print("判断字符串是否是可迭代对象!")
print(isinstance(nameStr,Iterable))
print("判断列表是否是可迭代对象!")
print(isinstance(nameList,Iterable))
print("判断元组是否是可迭代对象!")
print(isinstance(numberTuple,Iterable))
print("判断字典是否是可迭代对象!")
print(isinstance(personInfoDict,Iterable))
print("判断数字是否是可迭代对象!")
print(isinstance(number,Iterable))
print("------------------------------------------------------------------------------")
print("------------------------------------------------------------------------------")
# 实现对list进行下标循环
# 使用enumerate函数把一个list变成"索引-元素"对
nameList = ["Willard","ChenJD","ChenBao","ChenXiaoBao","hackerLuo"]
for index,value in enumerate(nameList):
    print(index,value)

print("------------------------------------------------------------------------------")
willardInfo = {"name":"Willard","age":18,"job":"Engineer"}
# 循环中同时引用两个变量,数据处理中常用
for key,value in willardInfo.items():
    print(key,value)

# 结果输出:
判断字符串是否是可迭代对象!
True
判断列表是否是可迭代对象!
True
判断元组是否是可迭代对象!
True
判断字典是否是可迭代对象!
True
判断数字是否是可迭代对象!
False
------------------------------------------------------------------------------
------------------------------------------------------------------------------
0 Willard
1 ChenJD
2 ChenBao
3 ChenXiaoBao
4 hackerLuo
------------------------------------------------------------------------------
name Willard
age 18
job Engineer

3.列表生成式

# 列表生成式:List Comprehensions,用来创建list的生成式
# 实例1:生成[1×1,2×2,3×3,...,10×10]的列表
# 法一:循环
numsList = []
for num in range(1,11):
    numsList.append(num * num)
print("numsList的内容:",numsList)
print("---------------------------------------------------------")
# 法二:列表生成式
print("列表生成式生成上述列表!")
# 把要生成的元素放在前面,后面加循环
print([num * num for num in range(1,11)])
print("---------------------------------------------------------")
# 在循环后添加if判断,筛选1-10中偶数的平方
print("列表生成式生成1-10偶数的平方的列表")
print([num * num for num in range(1,11) if num % 2 == 0])
print("---------------------------------------------------------")
# 双重循环
print("列表生成式应用于双重循环")
print([m + n for m in "Willard" for n in "ChenJD"])

# 结果输出:
numsList的内容: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
---------------------------------------------------------
列表生成式生成上述列表!
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
---------------------------------------------------------
列表生成式生成1-10偶数的平方的列表
[4, 16, 36, 64, 100]
---------------------------------------------------------
列表生成式应用于双重循环
['WC', 'Wh', 'We', 'Wn', 'WJ', 'WD', 'iC', 'ih', 'ie', 'in', 'iJ', 'iD', 'lC', 'lh', 'le', 'ln', 'lJ', 'lD', 'lC', 'lh', 'le', 'ln', 'lJ', 'lD', 'aC', 'ah', 'ae', 'an', 'aJ', 'aD', 'rC', 'rh', 're', 'rn', 'rJ', 'rD', 'dC', 'dh', 'de', 'dn', 'dJ', 'dD']

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Python高级特性与几种函数的讲解

    切片 从list或tuple中取部分元素. list = [1, 2, 3, 4] list[0 : 3] # [1, 2, 3] list[-2 : -1] # -1表示最后一个,[3, 4] list[1 :: 2] # index = 1开始,每两个取一个[2, 4] list[:] # 复制list,[1, 2, 3, 4] # 针对tuple,切片同样适用 iterable.iterator 可迭代,迭代器,集合类型数据可迭代但不是迭代器,可通过iter()转变为迭代器. 可迭代对象可

  • 一篇文章带你学习Python3的高级特性(2)

    目录 1.生成器 2.迭代器 总结 1.生成器 # 一边循环一边计算的机制,称为生成器:generator: # 创建generator方法: # 1.把一个列表生成式的[]改成() numsList = [num * num for num in range(10)] print("列表生成式生成numsList:",numsList) numsGenerator = (num * num for num in range(10)) print("生成器生成numsGene

  • Python高级特性——详解多维数组切片(Slice)

    (1) 我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组: >>> a = np.arange(24).reshape(2,3,4) >>> a array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) 多维数组a中有0~23的整数,共24个元素,是一个2×3×4的三维数组.我们可以

  • Python进阶之全面解读高级特性之切片

    众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象.通常来说,切片的作用就是截取序列对象,然而,对于非序列对象,我们是否有办法做到切片操作呢?在使用切片的过程中,有什么要点值得重视,又有什么底层原理值得关注呢?本文将主要跟大家一起来探讨这些内容,希望我能与你共同学习进步. 1.切片的基础用法 列表是 Pytho

  • Python全面解读高级特性切片

    目录 1.切片的基础用法 2.切片的高级用法 3.自定义对象实现切片功能 3.1.魔术方法:`getitem()` 3.2.自定义序列实现切片功能 3.3.自定义字典实现切片功能 4.迭代器实现切片功能 4.1.迭代与迭代器 4.2.迭代器切片 5.小结 前言: 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对

  • Python高级特性 切片 迭代解析

    切片:方便截取list.tuple.字符串部分索引的内容 正序切片 语法:dlist = doList[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.即索引0,1,2,正好是3个元素 实例: dolist = [1,3,5,7,9,11] dlist = dolist[0:3] # 与range()函数一致含左不含右 nlist = dolist[:3] # 当开始值为0时,可以不写,效果与dlist一致 print(dlist) print(nlist) 运行结果: 倒序切片

  • 一篇文章带你学习Python3的高级特性(1)

    目录 1.切片 2.迭代 3.列表生成式 总结 1.切片 # 切片:取list或tuple的部分元素 nameList = ["Willard","ChenJD","ChenBao","ChenXiaoBao","hackerLuo"] print("nameList的内容为:",nameList) print("--------------------------------

  • 一篇文章带你学习Python3的高阶函数

    目录 1.高阶函数 2.map/reduce 3.filter 4.sorted 总结 1.高阶函数 # 1.变量指向函数 # 调用函数和函数本身 print("-10的绝对值为:",abs(-10)) print("绝对值函数本身:",abs) print("--------------------------------------------------") # 把函数调用结果和函数本身赋值给变量,即变量指向函数 abs1 = abs(-1

  • 一篇文章带你学习Mybatis-Plus(新手入门)

    目录 Mybatis-Plus 1.快速入门地址:安装 | MyBatis-Plus (baomidou.com) 2.创建数据库mybatis-plus 3.创建springboot项目,配置yml文件 4.导入依赖 5.创建pojo包,新建User实体类 6.创建mapper包,新建UserMapper实体类 7.在主启动类中加上Mapperscan注解扫描mapper映射文件 8.查询所有数据测试类 9.开启mybatis-plus日志配置文件 10.主键生成策略 11.增加数据测试类 1

  • 一篇文章带你学习JAVA MyBatis底层原理

    目录 一.传统JDBC的弊端 二.mybatis介绍 三.MyBatis架构图 核心类解释 工作流程 四.自己通过加载xml配置走mybais流程实现例子 总结 一.传统JDBC的弊端 jdbc没有连接池.操作数据库需要频繁创建和关联链接,消耗资源很大. 在java中,写原生jdbc代码,硬编码不易维护(比如修改sql.或传递参数类型时.解析结果). 二.mybatis介绍 MyBatis是一款优秀的持久层框架,它支持自定义SQL.存储过程以及高级映射.MyBatis免除了几乎所有的JDBC代码

  • 一篇文章带你学习python的函数与类

    目录 函数 模块 类 根据类创建实例 继承 总结 现在做的一个小项目需要用到python的相关知识,但是因为太久没用一些东西都忘掉了,因此在本篇博客中记录一下python的函数和类的基础知识,下次可以直接查阅,用的参考书是<Python编程从入门到实践> 函数 运用关键字def告诉Python要定义函数: def greet_name(): print("Hello!") 包含参数: def greet_name(username): print("Hello,

  • 一篇文章带你了解jdk1.8新特性--为什么使用lambda表达式

    目录 一.为什么使用Lambda表达式 二.匿名内部类的方式与Lambda表达式方式的比较(示例) 三.需求演示示例 一.创建一个员工实体类 二.普通方式实现 1.代码如下 2.运行main函数,输出结果如下图: 3. 普通方式实现的缺点 三.优化方式一(策略模式实现) 1.定义一个策略接口 2.定义一个过滤年龄的接口实现类 3.定义一个过滤薪资的接口实现类 4.测试类如下: 5.运行main函数,输出如下: 6. 策略模式实现的缺点 四.优化方式二(匿名内部类实现) 1.定义一个策略接口 2.

  • 一篇文章带你顺利通过Python OpenCV入门阶段

    目录 1. OpenCV 初识与安装 2. OpenCV 模块简介 3. OpenCV 图像读取,显示,保存 4. 摄像头和视频读取,保存 5. OpenCV 常用数据结构和颜色空间 6. OpenCV 常用绘图函数 7. OpenCV 界面事件操作之鼠标与滑动条 8. 图像像素.通道分离与合并 9. 图像逻辑运算 10. 图像 ROI 与 mask 掩膜 11. 图像几何变换 12. 图像滤波 13. 图像固定阈值与自适应阈值 14. 图像膨胀腐蚀 15. 边缘检测 16. 霍夫变换 17.

  • 一篇文章带你吃透Vue生命周期(结合案例通俗易懂)

    目录 1.vue生命周期 1.0_人的-生命周期 1.1_钩子函数 1.2_初始化阶段 1.3_挂载阶段 1.4_更新阶段 1.5_销毁阶段 2.axios 2.0_axios基本使用 2.1_axios基本使用-获取数据 2.2_axios基本使用-传参 2.3_axios基本使用-发布书籍 2.4_axios基本使用-全局配置 3.nextTick和refs知识 3.0$refs-获取DOM 3.1$refs-获取组件对象 3.2$nextTick使用 3.3$nextTick使用场景 3.

  • 一篇文章带你彻底搞懂Redis 事务

    目录 Redis 事务简介 Redis 事务基本指令 实例分析 Redis 事务与 ACID 总结 Redis 事务简介 Redis 只是提供了简单的事务功能.其本质是一组命令的集合,事务支持一次执行多个命令,在事务执行过程中,会顺序执行队列中的命令,其他客户端提交的命令请求不会插入到本事务执行命令序列中.命令的执行过程是顺序执行的,但不能保证原子性.无法像 MySQL 那样,有隔离级别,出了问题之后还能回滚数据等高级操作.后面会详细分析. Redis 事务基本指令 Redis 提供了如下几个事

随机推荐