sort 、sorted、range、join方法 数字的正序、倒叙、翻转
大家可以想象一下 如果一串数字 是混乱的没有顺序这个时候你想要排序怎么办呢? 这个时候顺势而生的就有了sort方法
把数字从大到小的排列----->sort()
只对列表
li = [3, 5, 7, 8, 1, 0, 89, 45, 34]
li.sort()
print(li)
把列表中的数字从小到大排序---->sort(reverse=True)
只对列表
li = [3, 5, 7, 8, 1, 0, 89, 45, 34]
li.sort(reverse=True)
print(li)
把你输入的列表中数字翻转输出: reverse可以直接对列表或者整形进行翻转
li = [3, 5, 7, 8, 1, 0, 89, 45, 34]
li.reverse()
print(li)
sort()是对列表本身进行排序
sort()是直接对列表本身进行排序 可以看出赋值后也是最自己本身排序 赋值的没有意义
my_list = [3, 5, 1, 4, 2]
l = my_list.sort(reverse = True)
print(my_list) #[5, 4, 3, 2, 1]
print(l) # None
使用sort()方法对list排序会修改list本身,不会返回新list,通常此方法不如sorted()方便,但是如果你不需要保留原来的list,此方法将更有效sort()。
sort()不能对dict字典进行排序
sorted()保留本身的排序:
默认是从小到大排序
sorted()对列表进行排序的时候会保留本身的值生成一个新的列表
my_list = [3, 5, 1, 4, 2]
l = sorted(my_list)
print(my_list) # [3, 5, 1, 4, 2]
print(l) # [1, 2, 3, 4, 5]
sorted()加上key参数:
加上key参数是按照key参数的规则来排序
key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较
对复杂的元组进行排序:
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
] result = sorted(student_tuples,key = lambda student:student[2]) # 默认按照下标为2 的排序 是从小到大排序
print(result) # 输出[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] result_one = sorted(student_tuples,key = lambda student:-student[2])
print(result_one) # 输出 [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
以上可以看出排序是按照10, 12, 15值进行排序的,因为函数lambda student:student[2]返回的值分别是10, 12, 15。
而加了-号的就是从后向前排序的 倒着排序的
lambda student: student[2] 等价于
def f(student):
return student[2]
小练习:(面试题)
对以下的学生按照成绩从大到小来排序
l = [('Bod',75),('Adam',92),('Bar',66),('Lisa',88)]
l = [('Bod',75),('Adam',92),('Bar',66),('Lisa',88)]
result = sorted(l,key = lambda num : num[1])
print(result)
也可以:
def by_num(t): # 这个函数就好比我们for循环了l列表把它内部的所有内容进行了一一拿出来
print(t) #('Bod', 75) #得到的结果是以for循环的结果来打印的
print(t[1]) # 75
return t[1] result = sorted(l,key = by_num)
print(result) 加个-号就是按照从大到小反转排序
ret = sorted(l, key = lambda num :-num[1]) # [('Adam', 92), ('Lisa', 88), ('Bod', 75), ('Bar', 66)]
print(ret)
# 因为有key的存在所以这个是相当于把列表的可迭代对象进行for循环进行遍历、
# [11, 33, 4, 2, 11, 4, 9, 2]去重并保持原来的顺序
首先有两部分 去重和保持原来顺序 先去重 l = [11, 33, 4, 2, 11, 4, 9, 2] list_one =list(set(l))# 先去重
list = sorted(list_one,key = l.index) # key是排序规则 按照l的下标来排序
print(list) # [11, 33, 4, 2, 9]
# 按照年龄从小到大排序
list3 = [
{"name": "金老板", "age": 30}, {"name": "Eva_J", "age": 18}, {"name": "MJJ", "age": 29}
] result = sorted(list3,key = lambda age:age['age']) # 按照年龄从小到大
print(result)
# 相当于:
def age(t): # 这一步相当于for循环你要排序的可迭代对象
return -t['age'] # 按照年龄从大到小的排序 result = sorted(list3,key = age)
print(result)
range 当成数字列表、范围
li = [3, 5, 7, 8, 1, 0, 89, 45, 34]
for temp in range(0,len(li)): #这个时候你就可以看出来range的意思是代表你在括号内输入的所占的范围
print(temp)
for temp in range(0,101,2) : #打印0-10的所有偶数 记住所有的切片都是顾头不顾腚
print(temp)
join 方法 用字符串做一个连接符
连接可以替代对象中的每一个元素,形成一个新的字符串
s = '*'.join('nihao') 这个时候表达的就是用*号把n i h a o给连接起来其实就是用‘’引号的内容把括号内的内容给隔开
i = '_'.join('nihao')
print(i) # 结果n_i_h_a_o
join也可以把字典和元组转化为字符串 但是里面的元素必须是字符串类型的 但是字典只能把字典的key转化为字符串
>>> l = {'name':'nihao'}
>>> s= ' '.join(l)
>>> print(s)
name #大家可以看出这个字典转化为字符串是只能把key值转化为字符串
>>> li =('laoxiang', 'nihao')
>>> n = ' '.join(li)
>>> print(n)
laoxiang nihao
>>>
join也可以把一个列表内全是字符串那么就可以用join方法把这个列表转化为字符串 前提是不能是int类型必须是str类型
>>> lis = ['nihao', 'wohao', 'dajiahao']
>>> s= ' '.join(lis) #用空格分割
>>> print(s)
nihao wohao dajiahao #用不用空格来分割就是你引号内设置的
>>> m = ''.join(lis) #不用空格分割
>>> print(m)
nihaowohaodajiahao
>>>
sort 、sorted、range、join方法 数字的正序、倒叙、翻转的更多相关文章
- angular js 正序倒叙
<!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- js 正序、倒序、按字段排序方法
js 基础--sort方法: arrayObject.sort(sortby); 参数:定义排序规则(正序.倒序.按字段排序)的函数: 返回值:对数组的引用.请注意,数组在原数组上进行排序,不生成副本 ...
- 数组中的元素 增加push用法 unshift() 方法 和减少pop() 方法 shift() 和其他位置增删 splice() 方法 join() 方法 reverse() 方法 sort() 方法
push用法 push 英 [pʊʃ] 美 [pʊʃ] vt. 推,推动; vt. 按; 推动,增加; 对…施加压力,逼迫; 说服; n. 推,决心; 大规模攻势; 矢志的追求 定义和用法 push( ...
- Python中自定义类未定义__lt__方法使用sort/sorted排序会怎么处理?
在<第8.23节 Python中使用sort/sorted排序与"富比较"方法的关系分析>中介绍了排序方法sort和函数sorted在没有提供key参数的情况下默认调用 ...
- 004_Python的列表切片,增删改查,常用操作方法,元组,range,join
列表 列表是Python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = ['kevin',123,True,(1,2,3,'wusir'), ...
- java8笔记: sorted()之正序倒序
java8笔记: sorted()之正序倒序 这篇文章将会讲解Java 8 Stream sorted()示例 下面代码以自然序排序一个list List<Person> listTem ...
- 冒泡排序和sort,sorted排序函数
冒泡: # 轮数 元素个数 比较次数# 1 6 5# 2 5 4# 3 4 3# 4 3 2# 5 2 1 # 列表有n个元素,则应比较n-1轮,即循环次数n-1 a=[85,7,4,89,34,2] ...
- python join()方法的使用,可以应用到tcp压测发送指定数据长度的应用
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串.其中,序列中的元素应是字符串类型. 学习join()方法主要是为了配合随机数的使用,生产某个指定位数的随机数,在t ...
- join()方法
1.现在有T1.T2.T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? package com.mianshi.easy; class JoinDemo implements ...
随机推荐
- 高性能队列Disruptor的使用
一.什么是 Disruptor 从功能上来看,Disruptor 是实现了"队列"的功能,而且是一个有界队列.那么它的应用场景自然就是"生产者-消费者"模型的应 ...
- 深入理解java集合框架之---------Arraylist集合 -----构造函数
ArrayList有三个构造方法 ArrayList有三个常量 1.private transient Object[] elementData (数组); 2.private int size (元 ...
- Java reflect 反射 1
1 反射的概述 反射含义:可以获取正在运行的Java对象. JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法; 这种动态 ...
- [译]用R语言做挖掘数据《六》
异常值检测 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...
- [译]用R语言做挖掘数据《四》
回归 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...
- Jquery 搜索框自动提示
为文本框增加自动提示下拉功能,比如输入 1,则从后台数据库查询出包含1 的字段,在文本框增加下拉列表供用户选择 ajax 返回数据为搜索查询字段的json集合 <script src=" ...
- 2.java设计模式-抽象工厂模式
抽象工厂模式简介: 每一个模式都是针对某一种问题的解决方案.抽象工厂模式与工厂模式最大的区别在于,工厂模式针对的是一个产品等级结构,而抽象工厂模式面对的是多个产品等级结构,即产品族的概念. 这里讲解一 ...
- 微软2016校园招聘在线笔试-Professor Q's Software
题目2 : Professor Q's Software 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Professor Q develops a new softw ...
- 自定义scoll样式
使用伪类自定义scroll样式 效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...
- 最小树形图--朱刘算法([JSOI2008]小店购物)
题面 luogu Sol 首先设一个 \(0\) 号点,向所有点连边,表示初始价值 显然这个图的一个 \(0\) 为根的最小有向生成树的边权和就是每个买一次的最小价值 再买就一定能优惠(包含 \(0\ ...