python中的range与list函数

使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节。

这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序。

这里记录一下:

>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]

再看看list的操作:

array = [1, 2, 5, 3, 6, 8, 4]
#其实这里的顺序标识是
[1, 2, 5, 3, 6, 8, 4]
(0123456)
(-7,-6,-5,-4,-3,-2,-1)
>>> array[0:] #列出0以后的
[1, 2, 5, 3, 6, 8, 4]
>>> array[1:] #列出1以后的
[2, 5, 3, 6, 8, 4]
>>> array[:-1] #列出-1之前的
[1, 2, 5, 3, 6, 8]
>>> array[3:-3] #列出3到-3之间的
[3]

 

那么两个[::]会是什么那?

>>> array[::2]
[1, 5, 6, 4]
>>> array[2::]
[5, 3, 6, 8, 4]
>>> array[::3]
[1, 3, 4]
>>> array[::4]
[1, 6]
如果想让他们颠倒形成reverse函数的效果
>>> array[::-1]
[4, 8, 6, 3, 5, 2, 1]
>>> array[::-2]
[4, 6, 5, 1]

感觉自己懂了吧,那么来个冒泡吧:

array = [1, 2, 5, 3, 6, 8, 4]
for i in range(len(array) - 1, 0, -1):
    print i
    for j in range(0, i):
        print j
        if array[j] > array[j + 1]:
            array[j], array[j + 1] = array[j + 1], array[j]
print array

一行一行的来看:

line 1:array = [1, 2, 5, 3, 6, 8, 4]一个乱序的list没什么好解释的

line 2:for i in range(len(array) - 1, 0, -1):这就是上边给的例子的第二条,我们替换下就成为range(6,1,-1),意思是从6到1间隔-1,也就是倒叙的range(2,7,1),随后把这些值循环赋给i,那么i的值将会是[6, 5, 4, 3, 2]

line 3:for j in range(0, i):这是一个循环赋值给j,j的值将会是[0, 1, 2, 3, 4, 5][0, 1, 2, 3, 4][0, 1, 2, 3][0, 1, 2][0, 1]
那么上边两个循环嵌套起来将会是

i------------6
j------------0j------------1j------------2j------------3j------------4j------------5

i------------5
j------------0j------------1j------------2j------------3j------------4
i------------4
j------------0j------------1j------------2j------------3
i------------3
j------------0j------------1j------------2
i------------2
j------------0j------------1

line 4:if array[j] > array[j + 1]:

>>> array = [1, 2, 5, 3, 6, 8, 4]
>>> array[0]
1
>>> array[1]
2
>>> array[2]
5
>>> array[3]
3
>>> array[4]
6
>>> array[5]
8
>>> array[6]
4
其实·就是使用这个把这个没有顺序的array = [1, 2, 5, 3, 6, 8, 4]排序

line 5:array[j], array[j + 1] = array[j + 1], array[j] 替换赋值

line 6:打印出来

其实要想省事儿,sort()函数一句就能搞定.......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 546. 移除盒子(DP)*

文章目录1. 题目2. 解题1. 题目 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。 每一轮你可以移除具有相同颜色的连续 k 个盒子(k > …

转 php 观察者模式

<?php /** * 观察者模式 *//** * 抽象主题角色 */ interface Subject {/** * 增加一个新的观察者对象 * param Observer $observer */ public function attach(Observer $observer);/** * 删除一个已注册过的观察者对象 * param Observer $observer */ public function det…

配置VLAN以及配置VTP;

实验目的 配置VLAN; 通过VLAN Trunk配置跨交换机的VLAN; 配置VTP; 查看上述配置项目的有关信息。 设备需求 本实验需要以下设备&#xff1a; Cisco Catalyst 2950系列交换机2台&#xff0c;型号不限; 交叉线序网线1条; 1台带有超级终端程序的PC机&#xff0c;以及Cons…

python中的随机函数random

一、random模块简介 Python标准库中的random函数&#xff0c;可以生成随机浮点数、整数、字符串&#xff0c;甚至帮助你随机选择列表序列中的一个元素&#xff0c;打乱一组数据等。 二、random模块重要函数 1 )、random() 返回0<n<1之间的随机实数n&#xff1b; …

LeetCode 1140. 石子游戏 II(DP)*

文章目录1. 题目2. 解题1. 题目 亚历克斯和李继续他们的石子游戏。许多堆石子 排成一行&#xff0c;每堆都有正整数颗石子 piles[i]。游戏以谁手中的石子最多来决出胜负。 亚历克斯和李轮流进行&#xff0c;亚历克斯先开始。最初&#xff0c;M 1。 在每个玩家的回合中&…

在Ubuntu上下载、编译和安装Android 4.2 最新内核源代码(Linux Kernel)

根据http://blog.csdn.net/luoshengyang/article/details/6564592博客内容对android4.2的编译 从源代码树下载下来的最新Android源代码&#xff0c;是不包括内核代码的&#xff0c;也就是Android源代码工程默认不包含Linux Kernel代码&#xff0c;而是使用预先编译好的内核&…

Python中的Number(数字)

Python Number 数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值&#xff0c;将重新分配内存空间。 以下实例在变量赋值时 Number 对象将被创建&#xff1a; var1 1 var2 10 您也可以使用del语句删除一些 Number 对象引用。 del语句的…

LeetCode 1550. 存在连续三个奇数的数组

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr&#xff0c;请你判断数组中是否存在连续三个元素都是奇数的情况&#xff1a;如果存在&#xff0c;请返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;arr [2,6,4,1] 输出&…

配置RIP实验

实验目的 掌握RIPv1和v2配置方法 掌握show ip rip database、sh ip protocol命令 掌握debug命令 掌握将RIP的广播更新方式更改为单播方式 设备需求 本实验需要以下设备&#xff1a; 4台2811Cisco路由器&#xff0c;四台都有两个FastEthernet口。 2条双绞线&#xff0c;…

LeetCode 1551. 使数组中所有元素相等的最小操作数(等差数列)

文章目录1. 题目2. 解题1. 题目 存在一个长度为 n 的数组 arr &#xff0c;其中 arr[i] (2 * i) 1 &#xff08; 0 < i < n &#xff09;。 一次操作中&#xff0c;你可以选出两个下标&#xff0c;记作 x 和 y &#xff08; 0 < x, y < n &#xff09;并使 arr…

协议数据分析

实验目的 了解协议分析仪的使用方法和基本特点。 增强对网络协议的理解。 实验要求 要求在进行协议数据分析后&#xff0c;能够将网络数据与具体的网络操作相互映证&#xff0c;如实的记录实验结果&#xff0c;完成实验 实验环境 1&#xff0e;一台运行Windows 2000的计算机…

python中的面向对象

Python 面向对象 Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。现在介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言&#xff0c;那你可能需要先了解一些面向对象语言的一些基本特…

会计基础第二次模拟试题(1)

会计基础第二次模拟试题(1) 会计基础第二次模拟试题(1) 之前我们整理了一部分会计基础的模拟题&#xff0c;下面是之前的文章列表&#xff0c;请大家多提建议&#xff1a; 会计基础第一次模拟题会计基础一 会计基础模拟练习2 会计基础模拟试题三 会计基础4 会计基础5 会计基础6…

LeetCode 1552. 两球之间的磁力(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 在代号为 C-137 的地球上&#xff0c;Rick 发现如果他将两个球放在他新发明的篮子里&#xff0c;它们之间会形成特殊形式的磁力。 Rick 有 n 个空的篮子&#xff0c;第 i 个篮子的位置在 position[i] &#xff0c;Morty 想把 m 个球放到这些篮子…

无连接网络通信程序UDP

服务器端 #include <windows.h> #include <iostream.h> #include <winsock.h> #pragma comment(lib,"ws2_32")#define NO_FLAGS_SET 0#define PORT (u_short) 44965 #define MAXBUFLEN 256INT main(VOID) {WSADATA Data;//它存储 被WSAStartup函数…

python中的LEGB 规则

Python 使⽤ LEGB 的顺序来查找⼀个符号对应的对象 locals -> enclosing function -> globals -> builtins 局部变量———闭包空间———全局变量———内建模块 a 1 # 全局变量 globals def fun(): a 2 …

LeetCode 1553. 吃掉 N 个橘子的最少天数(BFS)

文章目录1. 题目2. 解题1. 题目 厨房里总共有 n 个橘子&#xff0c;你决定每一天选择如下方式之一吃这些橘子&#xff1a; 吃掉一个橘子。如果剩余橘子数 n 能被 2 整除&#xff0c;那么你可以吃掉 n/2 个橘子。如果剩余橘子数 n 能被 3 整除&#xff0c;那么你可以吃掉 2*(n…

计算机网络 谢希仁 课后习题部分答案

试说明IP地址与硬件地址的区别&#xff0c;为什么要使用这两种不同的地址&#xff1f; 解&#xff1a; IP地址放在IP数据报的首部&#xff0c;硬件地址则放MAC帧的首部&#xff1b;在网络层和网络层以上使用IP地址&#xff0c;数据链路层及以下使用硬件地址 IP 地址就是给每个…

Mysql 导入导出数据结构及数据

方式一&#xff1a; mysqldump -ukevin -P3306 --default-character-setutf8 -p -h10.1.15.123 activity sign_in_user > user.sql 导出的结果包含建表脚本及数据已INSERT.SQL形式。 导入数据 mysql>use activity; mysql>source user.sql; 方式二&#xff1a; …