1、对列表进行排序:

  (1)使用列表对象的sort()方法:

  列表对象提供了sort()方法用于对原列表中的元素进行排序。排序后原列表中的元素顺序将发生改变。改变对象的sort()方法的语法格式如下:

listname.sort(key=None,reverse=False)
  #listname:表示要进行排序的列表。
  #key:表示指定从每个元素中提取一个用于比较的键(例如设置”key=str.lower“表示在排序时不区分字母大小写)
  #reverse:可选参数,如果将其指定为True,则表示降序排列;如果为False,则表示升序排列,默认为升序排列。
grade=[74,90,78,84,98,62,75,82]
print("原成绩:",grade)
grade.sort()
print("升 序:",grade)
grade.sort(reverse=True)
print("降 序:",grade)

  使用sort()方法进行数值列表的排序比较简单,但是使用sort()方法对字符串列表进行排序时,采用的规则是先对大写字母排序,然后再对小写字母排序。如果不区分大小写对字符串列表进行排序,需要指定其key参数。

char=["Curry","Bome","deven","ansible"]
print("原字符串顺序:",char)
char.sort()
print("默认大写字母优先排序:",char)      #先对大写字母进行排序,然后再对小写字母进行排序。
char.sort(key=str.lower)
print("不区分大小写字母排序:",char)

  采用sort()方法对列表进行排序时,对中文的支持不好,排序的结果与我们常用的音序排序法或者笔画排序法都不一致,如果需要实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。

  (2)使用内置的sorted()函数实现:

  再Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数进行排序后,原列表的元素顺序不变。

sorted(iterable,key=None,reverse=False)
  #iterable:表示要进行排序的列表名称
  #key:表示指定从每个元素中提取一个用于比较的键(例如,设置”key=str.lower“表示在排序时不区分字母大小写)
  #reverse:可选参数,如果将其指定为True,则表示降序排列;如果为False,则表示升序排列,默认为升序排列。
num=[97,65,75,78,83,91,73,89]
print("原序列:",num)
num_as=sorted(num)
print("升 序:",num_as)
num_des=sorted(num,reverse=True)
print("降 序:",num_des)

  列表对象的sort()方法和内置sorted()函数的作用基本相同;不同点是在使用sort()方法时,会改变原列表的元素排列顺序,而是用sorted()函数时,会建立一个原列表的副本,该副本为排序后的列表。

2、列表推导式:

  使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。列表推导式通常有以下几种常用的语法格式。

  (1)生成指定范围的数值列表,语法格式如下:

list = [Expression for var in range]
  #list:表示生成的列表名称。
  #Expression:表达式,用于计算新列表的元素。
  #var:循环变量。
  #range:采用range()函数生成的range对象。
import random
randomnumber=[random.randint(10,100) for i in range(10)]
print("生成的随机数为:",randomnumbe

  (2)根据列表生成指定需求的列表,语法格式如下:

newlist = [Expression for var in list]
  #newlist:表示新生成的列表名称
  #Expression:表达式,用于计算新列表的元素
  #var:变量,值为后面列表的每个元素值
  #list:用于生成新列表的原列表
commodity=[80,40,60]
print("原商品的价格分别:",commodity)
new_commodity=[int(i*0.5) for i in commodity]
print("打五折后的价格为:",new_commodity)

  (3)从列表中选择符合条件的元素组成新的列表,语法格式如下:

newlist = [Expression for var in list if condition]
  #newlist:表示新生成的列表名称
  #Expression:表达式,用于计算新列表的元素
  #var:变量,值为后面列表的每个元素值
  #list:用于生成新列表的原列表
  #condition:条件表达式,用于指定筛选条件
commodity=[6500,3000,5400,5800,4200]
print("原商品列表:",commodity)
sale=[ i for i in commodity if i>5000]
print("价格高于5000的:",sale)

3、二维列表的使用:

  二维列表中的信息以行和列的形式表示,第一个下标代表元素所在的行,第二个下标代表元素所在的列。

  例如电影院的座位号,每排每列就是一个二维列表。

  (1)直接定义二维列表:

  在Python中,二位列表是包含列表的列表,即一个列表的每一个元素又都是一个列表。

List=[[10,20,30,40,50],
[11,21,31,41,51],
[12,22,43,42,52],
[13,23,33,43,53]]
print(List)

  (2)使用嵌套的for循环创建:

  创建二位列表,可以使用嵌套的for循环实现。

创建一个包含4行5列的二位列表。
arr = []          #创建一个空列表
for i in range(4):
arr.append([])    #在空列表中再添加一个空列表
for j in range(5):
arr[i].append(j)   #为内层列表构建元素
print(arr)         #外层循环控制行,内层循环控制列

  (3)使用列表推导式创建:

  使用列表推导式也可以创建二维列表,推荐使用这种方法创建二维列表。

使用列表推导式创建一个包含4行5列的二维列表
arr = [[j for j in range(5)] for i in range(4)]
print(arr)

  创建二维数组后,可以通过以下语法格式访问列表中的元素:

listname[下标1][下标2]
  #listname:列表名称
  #下标1:表示列表中第几行,下标值从0开始,即第一行的下标为0.
  #下标2:表示列表中第几行,下标值从0开始,即第一列的下标为0.

  以上结果是访问第一行的第三列。

  练习:使用嵌套的for循环将柳宗元的《江雪》分别横板和竖版输出

str1="千山鸟飞绝"
str2="万径人踪灭"
str3="孤舟蓑笠翁"
str4="独钓寒江雪"
verse=[list(str1),list(str2),list(str3),list(str4)] #定义一个二维表
print("横板")
for i in range():     #循环古诗得每一行
for j in range():   #循环每一行的每列
if j==:      #如果是一行中的最后一个字
print(verse[i][j]) #换行输出
else:
print(verse[i][j],end="") #不换行输出 verse.reverse()       #对列表进行逆序排列
print("\n竖版")
for i in range():    #循环每一行的而每列
for j in range(): #循环逆序排列后的第一行
if j==:      #如果是最后一行
print(verse[j][i]) #换行输出
else:
print(verse[j][i],end="") #不换行输出

  在上面的代码中,list()函数用于将字符串转换为列表;列表对象的reverse()方法用于对列表进行逆序排列,即将列表的最后一个元素移到第一个,倒数第二个元素移到第二个,以此类推。

4、元组:

  元组(tuple)是Python中另一个重要的序列结构,与列表类似,也是由一系列按特定顺序排列的元素组成,但是它是不可变序列,因此,元组也称为不可变的列表。

  在形式上,元组的所有元素都放在一对括号()中,两个相邻元素使用逗号“,”分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到元组中,并且在同一个元组中,元素的类型可以不同,因为他们之间没有任何关系。

  通常情况下,元组用于保存程序中不可修改的内容。

  从元组和列表的定义上看,这两种结构比较相似。二者之间的主要区别为:元组是不可变序列,列表是可变序列。即元组中的元素不可以单独修改,而列表则可以任意修改。

  (1)使用赋值运算符直接创建元组:

  同其他类型的Python变量一样,创建元组时,也可以使用赋值运算符“=”直接将一个元组赋值给变量。语法格式如下:

tuplename = (element1,element2,enelent3,...,element)
  #tuplename:元组的名称
  #element1,element2,enelent3,...,element    元组中的元素,个数没有限制

  创建元组的语法与创建列表的语法类似,只是创建列表时使用的是“[ ]”,而创建元组时使用的时"( )"。

例如:以下都是合法的元组:
num=(4,54,64,23)
char=(“科比","乔丹","詹姆斯")
untitle=('python',"java",["linux","云计算'])

  在Python中,元组使用一对小括号将所有元素括起来,但是小括号并不是必须的,只要将一组值用逗号分隔开来,Python就可以视其为元组。

  如果创建的元组只包括一个元素,则需要在定义元组时,在元素的后面加一个逗号”,“,如果不加逗号,那么就是一个字符串。

verse1=("一片冰心在玉壶",)
verse2=("一片冰心在玉壶")
print(verse1)
print(verse2)

  (2)使用type()函数测试变量的类型。

verse1=("一片冰心在玉壶",)
verse2=("一片冰心在玉壶")
print("verse1的类型是:",type(verse1))
print("verse2的类型是:",type(verse2))

人生苦短,我用Python(3)的更多相关文章

  1. 人生苦短,我用Python(1)

    一.人生苦短,我用Python 在文章的开头给大家介绍一下Python语言,作者Guido von Rossum.对,就是图中的“人生苦短我用Python”那哥们.你可能以为我会用很多文字介绍Pyth ...

  2. 人生苦短之---认识Python

    认识 Python 人生苦短,我用 Python —— Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...

  3. 初学者路径规划 | 人生苦短我用Python

    纵观编程趋势 人生苦短,我用Python,比起C语言.C#.C++和JAVA这些编程语言相对容易很多.Python非常适合用来入门.有人预言,Python会成为继C++和Java之后的第三个主流编程语 ...

  4. 人生苦短我用Python 第三周 函数周

    函数的定义: 1,def 函数名(参数1,参数2......): "注释:函数的作用和参数,增加可读性", 2,函数体 3,返回值 最简单的函数: def func(): prin ...

  5. 人生苦短,我用python(目录)

    一.python基础篇 python中闭包及延时绑定问题 python中的装饰器.生成器 二.前端 bootstrap框架 BOM&DOM JavaScript中的词法分析 三.数据库 mys ...

  6. 人生苦短,我用python

    星空不问赶路人,时光不负有心人,你可以脱变. 1.计算机的初步认识 2.解释器的安装 python2.7(2020年官方不在维护) python3.6 (官方推荐) 1.下载安装包 https://w ...

  7. 深度学习之美(张玉宏)——第四章 人生苦短我用python

    1 函数参数 (1)收集参数:以一个星号*加上形参名的方式,表示这个函数的实参个数不定,可能0个可能n个. def varParaFun(name,*param): print('位置参数是:',na ...

  8. 人生苦短我用Python,本文助你快速入门

    目录 前言 Python基础 注释 变量 数据类型 浮点型 复数类型 字符串 布尔类型 类型转换 输入与输出 运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 if.while.for 容器 列 ...

  9. 人生苦短 我用Python 第二周的第一天 (数据类型)

    数字:  整形  int  长整形(Python3里面把整形.长整形和到一起啦) 浮点型( float) 1.3 5.2 等等  科学技术发表示 1.3e-3=0.0013 e的代表10. bin是二 ...

  10. 一句话打印'*'图案(列表推导式, 人生苦短, 我用Python)

    ```python # coding=utf-8 print ('\n'.join(['*'*6 for i in range(4)])) # ****** # ****** # ****** # * ...

随机推荐

  1. 理解Redis持久化

    本文首发于:https://mp.weixin.qq.com/s/WVUGWuNrGoyY_7aDf7NNmA 微信公众号:后端技术指南针 0.前言 通俗讲持久化就是将内存中的数据写入非易失介质中,比 ...

  2. Alibaba Nacos 学习(四):Nacos Docker

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  3. PostGIS 用Navicat工具添加自增

    1.新建查询,新增序列(从66开始,每次自增1): CREATE SEQUENCE seq_area INCREMENT 1 MINVALUE 66 MAXVALUE 999999999 START ...

  4. 【计算机网络】你真的了解HTTP(HTTPS)协议的这12个知识点吗

    HTTP协议 1. 介绍一下OSI七层参考模型和TCP/IP五层模型 1.1 OSI七层模型 1.2 TCP/IP五层模型 1.3 各层的设备 [各层设备] 1.4 各层对应协议 2. HTTP协议和 ...

  5. Android View 的添加绘制流程 (二)

    概述 上一篇 Android DecorView 与 Activity 绑定原理分析 分析了在调用 setContentView 之后,DecorView 是如何与 activity 关联在一起的,最 ...

  6. C语言基础——进制转换 / 数据表示

    第一部分:进制转换 二进制:由0~1构成,逢2进1 八进制:由0~7构成,逢8进1 十六进制:由0~9.A~F构成,逢16进1 两个基本概念 基数:n进制基数为n 123.4 = 1*10^2 + 2 ...

  7. 在vue中选中某个标签,并且对其属性进行操作

    第一步:在标签中添加ref="111"属性 第二步:this.$refs.111.属性=""   此步骤是一111为标记选中了要操作的标签,通过点属性的方法,进 ...

  8. 你真的了解Object源码吗

    欢迎点赞阅读,一同学习交流,有疑问请留言 . GitHub上也有开源 JavaHouse 欢迎star 引入 Object 应该是比较简单的源码了.现在我们来分析一下他.Object 是类层次结构的根 ...

  9. EntityFramework Core 3多次Include导致查询性能低之解决方案

    前言 上述我们简单讲解了几个小问题,这节我们再来看看如标题EF Core中多次Include导致出现性能的问题,废话少说,直接开门见山. EntityFramework Core 3多次Include ...

  10. 【RN - 基础】之React Native组件的生命周期

    下图描述了React Native中组件的生命周期: 从上图中可以看到,React Native组件的生命周期可以分为初始化阶段.存在阶段和销毁阶段. 实例化阶段 实例化阶段是React Native ...