当前位置: 首页 > news >正文

三、Python-列表

三、Python-列表
一、序列:是一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值
  • 索引:从左到右的索引从0开始依次增加的正整数;从右到左的索引为-1开始的复数
  • 切片(分片):一中获取序列中的元素的方法;
sname[start:end:step]--sname:序列名;start:起始值;end:结束值(不包括);step:步长
  • 序列相加:两个序列可以相加(只能同类型序列:列表+列表,元组+元组,字符串+字符串),被加的序列排在原来的序列后面
  • 乘法:序列的乘法实际上就是把一个序列中的元素复制几次
  • 检查某个元素是否是序列的成员:print("姚明" (not) in nba)---判断姚明(不)在nba列表中
len也能计算字符串的长度
  • 计算序列的长度:print("列表的长度为:"len(nba))---计算nba序列的长度
  • 最大值:print(max(number))---返回序列中的最大值(只能用在序列中为数字型时)
  • 最小值:prin(min(number))---返回序列中的最小值(只能用在序列中为数字型时)
list():把序列转换为列表(数字和字符串都能转换)       str():序列转换为字符串
sum():计算序列中元素和                 sorted():给序列中元素排序
reversed():反转序列中元素                  enumerate():把序列组合为一个索引序列
二、列表:列表中可以放:整数,实数,布尔值,字符串,序列,对象
  • 列表的创建和删除:一般不把不通类型的数据放在同一个列表中(提高可读性)
    • 赋值运算符直接创建:listname = [元素1,元素2,…]---用英文状态的“,”隔开,元素数量无限制
    • 创建空列表:a = []---创建一个名为a的空列表
    • 创建数字列表:list(range(2,21,2))---2—21之间的偶数(数据全部都为数字)
    • del listname------删除列表(很少用)
  • 访问列表元素:获取列表中的内容
    • print() 索引 切片
  • 遍历列表:把列表中的元素全部预览一遍
    • for循环实现:只能输出元素与的值
      • for iten in listname: ---item用于保存获取到的元素,listname为列表名
    • for循环和enumerate:即显示索引又显示元素
      • for index,item in enumerate(listname): ---index用于保存索引,item用户保存获元素的值
  • 添加元素:+运算符添加(效率低)
    • append:在元素列表末尾添加元素
      • listname.append(obj) ---listname为被添加的列表名;obj为要添加的对象
    • inert:用于在列表中间插入一个对象
      • listname.inert(num,obj) ---num为要插入的位置的索引号;obj为要插入的对象
    • extend:用于把一个列表添加到另一个列表的末尾
      • listname.extend(seq) ---listname为原列表名,seq为被添加的列表
  • 修改元素:只需要通过索引获取该元素,然后再为其重新赋值
    • verser[2]="…" ---verser为列表名,2为要修改的元素的索引号
  • 删除列表元素:
    • 根据索引号删除:必须知道要删除的元素的索引号(索引号可为正数或负数)
      • del verser[-1] ---删除verser列表中索引为-1的元素
    • 根据元素值来删除:不确定其位置的元素(根据元素值来删除,最好先判断该元素是否在列表)
      • if verser.count(value)>0 ---判断value元素是否在列表verser中
        • verser.remove(value) ---删除verser列表中的value值
  • 对列表进行统计计算:
    • count:获取指定元素在列表中出现的次数(精确匹配,不能只是元素的一部分)
      • listname.count(obj) ---统计元素obj在列表listname中出现的次数
    • index:获取指定元素在列表中首次出现的位置(索引)(被统计的元素只能精确匹配)
      • listname.index(obj) ---统计obj在列表中首次出现的位置
    • sum:统计数字列表的元素和
      • sum(iterable,start) ---iterable为要计算的列表名,start为系统统计结果要加的值(默认为0)
  • 对列表进行排序:
    • sort:对元素排序,排序后原列表中的元素顺序将发生改变
      • listname.sort(key=None,reverse=False) ---key表示指定一个从每个元素中提取的一个比较键(key=str.lower表示在排序时不区分大小写);reverse为True表示降序,False为升序,默认为升
    • sorted:排序后,源列表的元素顺序不变
      • sorted(itemble,key=None,reverse=False) ---itemble表示要排序的列表名称
三、列表推导式:可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表
生成指定范围的数字列表:list = [Expression for var range]    
list = [i*i for i in range(2,11,2)] ---生成0-10的偶数的平方
list:生成列表的名称;         expression:表达式,计算型列表的元素
var:循环变量             range:采用range()函数生成range对象
根据列表生成指定需求的列表:newlist = [expression for var in list]
price = [1200,5300,2988,6200,1998,8888]
sale = [int(x*0.5) for x in price]
print('原价格:',price)
print('五折价格:',sale)
newlist:表示新生成的列表名; list:用于生成新列表的源列表名
从列表中选择符合条件的元素组成型列表:newlist = [expression for var in list if condition]
    price = [1200,5330,2988,6200,1998,8888]
sele = [z for z in price if z >5000]
print('原列表:',price)
print("高于5000的:",sale)
condition:条件表达式,用于指定筛选的条件
四、二维列表的使用:二维列表就是包含列表的列表,一个列表的每个元素都是一个列表
直接定义二维列表:listname=[元素1,元素2…],[元素11,元素12…],[元素21,元素22…],…]
使用嵌套的for循环创建:      
room = []
for i in range(1,5): #楼层
  room.append([]) #添加一个空列表
for j in range(1,8): #每一层的房间数
  room[i-1].append(i*1000+100+j)
print(room)
使用列表推导式创建:(能使用推导式尽量使用推导式)
          eg:room=[[i*1000+100+j for j in range(1,8)] for i in range(1,5)]
      print(room)
eg:   
str1 = "千山鸟飞绝"
str2 = "万径人踪灭"
str3 = "孤舟蓑笠翁"
str4 = "独钓寒江雪"
list1 = [list(str1),list(str2),list(str3),list(str4)]
print("--横版输出--")
print()
for i in range(4): #循环的行数
  for j in range(5): #循环每一行的字
    if j == 4: #一行中的最后的一个字
      print(list1[i][j]) #换行输出
    else:
      print(list1[i][j],end="") #不换行输出
print()
print()
print("--竖版--")
print()
list1.reverse() #排序(逆序)
for i in range(5): #循环每一行中的每一个
  for j in range(4): #每一行
    if j == 3:
      print(list1[j][i]) #换行输出
    else:
      print(list1[j][i],end='')
 
posted on 2019-04-18 10:38 dameon 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/dameon/p/10728173.html

相关文章:

  • 创建和删除数据库和基本查询
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 内置对象String及String的常用操作
  • Java提高篇——单例模式
  • 致远力推协同运营中台,赋能数字化升级
  • 文件属性权限及其权限设置
  • 关于ORACLE的SQL语句拼接、替换、截取、排序,联表等...~持续汇总~
  • Python语言学习 (三)1.1
  • windows服务器上面创建定时任务
  • mybatis整合ehcache
  • mac显示隐藏文件
  • 谈谈持续集成,持续交付,持续部署之间的区别
  • 揭秘 DockerCon 重量级演讲嘉宾(六)
  • 纠结的链接:ln、ln -s、fs.symlink、require
  • 配置DHCP
  • 分享的文章《人生如棋》
  • 【comparator, comparable】小总结
  • ES6核心特性
  • iOS | NSProxy
  • IOS评论框不贴底(ios12新bug)
  • k8s如何管理Pod
  • MQ框架的比较
  • nginx 配置多 域名 + 多 https
  • npx命令介绍
  • rc-form之最单纯情况
  • Redis 懒删除(lazy free)简史
  • Terraform入门 - 1. 安装Terraform
  • Vue UI框架库开发介绍
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 编写符合Python风格的对象
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 聊一聊前端的监控
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 网络应用优化——时延与带宽
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Mac 上flink的安装与启动
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1) caustics\
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 未来三学期想要修的课 (日記)
  • (转)nsfocus-绿盟科技笔试题目
  • (转)详解PHP处理密码的几种方式
  • (状压dp)uva 10817 Headmaster's Headache
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET CORE Aws S3 使用
  • .net core使用ef 6