列表的初识,列表的索引切片,列表的增删改查,列表的嵌套,元组的初识,range
1 内容总览
- 列表的初识
- 列表的索引切片
- 列表的增删改查
- 列表的嵌套
- 元组的初识(了解)
- 元组的简单应用(了解)
- range
2 具体内容
列表的初识
why:
- str: 存储少量的数据。切片出来全都是str类型,存储的数据单一。
- list:能储存大量的数据。包含不同类型的数据。且有顺序,有规律,可自己制作设计其中的数据,可修改
what:list
l1 = [100, 'alex',True,[1, 2, 3]] 可承载任意数据类型,存储大量的数据。
python常用的容器型数据类型。
列表是有序的,可索引,切片(步长)。
列表可+列表 ( 叫list的合并 );列表可*int
#列表的合并 l1 = [1,2,3,4] l2 = [11,22,33] print(l1 + l2) #[1, 2, 3, 4, 11, 22, 33] 是放到了一个列表里 #列表*数字 print(l1 * 2) #[1, 2, 3, 4, 1, 2, 3, 4] 是放到了一个列表里
列表的索引,切片,步长
li = [100, '太白', True, [1, 2, 3]] # 索引 # print(li[0], type(li[0])) #元素是什么类型,取出来就是什么类型(str取出来均是str) # print(li[1],type(li[1])) # print(li[-1]) # 切片 (顾头不顾腚) # print(li[:2])
相关练习题:
li = [1, 3, 2, "a", 4, "b", 5,"c"] # 通过对li列表的切片形成新的列表l1,l1 = [1,3,2] print(li[:3]) # 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"] print(li[3:6]) # 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"] print(li[1:-2:2]) # 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3] print(li[-3::-2])
列表的增删改查
# 1.列表的创建(3种): # 方式一 # l1 = [] #空列表 # l1 = [1, 2, 'Alex'] # 方式二 # l1 = list() #空列表 # l1 = list('f小白hd12jf') #['f', '小', '白', 'h', 'd', '1', '2', 'j', 'f'] # print(l1) # 方式三:列表推导式(后续) # 2.列表的增删改查 # 写在前面:a.列表的增删改3种操作中,除了.pop可以打印动作外,其他均不可打印动作; # b.列表的查.按索引,切片查值均是直接打印动作 l1 = ['太白', '女神', 'xiao','吴老师', '闫龙'] # 增:3种 # 写在前面:此3种,均只能print(l1),不能print(l1.append("某元素")),因为不能打印动作 # append:追加 # l1.append('xx') # print(l1.append('xx')) # 不能打印它!!!不能打印动作! # print(l1) #只能打印l1 # 举例: # l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] # while 1: # name = input('请输入新员工姓名:(Q或者q退出程序)') # if name.upper() == 'Q': break # l1.append(name) # print(l1) # insert 插入 # l1.insert(索引,'wusir') #要插入到哪个位置,索引就写谁 # print(l1) #只能打印l1,不能打印动作 # extend 迭代着追加 #将可迭代对象迭代(拆开)着追加进去 # 注:效率低,因为插入位置元素后面的元素全部需要后移 # l1.extend('abcd') #['太白', '女神', 'xiao', '吴老师', '闫龙', 'a', 'b', 'c', 'd'] # l1.extend(['alex',]) #['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex'] # l1.extend(['alex', 22]) #['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex',"22"] # print(l1) #只能打印l1,不能打印动作 # 注:[1,]只要带逗号,就是个列表 # 删:4种 # 写在前面:除了pop有返回值外(即可打印动作),其他3种均只可print(l1),不可打印动作. # pop 按照索引位置删除 # l1.pop(-2) # 按照索引删除 # print(l1) # print(l1.pop(-2)) #若打印动作,返回的是删除的元素(即有返回值) # l1.pop() # 不写索引,默认删除最后一个 # print(l1) # remove 指定元素删除,如果有重名元素,默认删除从左数第一个 # l1.remove('xiao') # print(l1) #不能打印动作 # clear清空 (了解) # l1.clear() # print(l1) #不能打印动作 # del # 按照索引删除 # del l1[-1] # print(l1) #不能打印动作 # 按照切片(步长)删除 # del l1[::2] # print(l1) #不能打印动作 # 改:1种-实则3种 # 写在前面:按索引改值,只可print(l1),不可打印动作.无意义 # a.按照索引改值 # l1[0] = '男神' # b.按照切片改 # 如何改?--是将可迭代对象 迭代着(拆开)放回原列表的切片处. # 切片:将可迭代对象单个放回原处来改值,可迭代对象里的元素个数与取出的元素个数可以不相等!可多可少 # l1 = ['太白', '女神', 'xiao','吴老师', '闫龙'] # l1[2:] = 'fsdafsdafsdfdsfsadfdsfdsgsfdag' #切片:可多可少 # print(l1) #不能打印动作 # c.按照切片步长改 #步长:取处几个就放回几个 # 如何改?--是将可迭代对象 迭代着(拆开)放回原列表取出来的元素处. # 步长:取几个,就放几个,不能多也不能少!!! # l1[::2] = 'abc' # l1[::2] = 'abcd' #会报错 # print(l1) # 思考题:为什么正向能放开,反向放不开呢? l1 = [1,2,3,4,9,8,9] l1[:3:] = "asdqwe" print(l1) #['a', 's', 'd', 'q', 'w', 'e', 4, 9, 8, 9] l1 = [1,2,3,4,9,8,9] l1[-1:-3:-1] = "asdqwe" print(l1) #报错-ValueError:尝试将大小为6的序列分配给大小为2的扩展片 # 底层原理:因为list只能向下延伸开辟新的内存空间,但不能反向(倒着)去开) # 写在最后:索引,切片,切片步长改值 放回去的可以是单个元素,也可以是个list # li = ["水杯",2,3,"abc",] # li[0:3:2] = [1,2,3],[1234] # print(li) # 输出结果:[[1, 2, 3], 2, [1234], 'abc'] # 查:3种 # 按索引,切片(步长)查 # for i in l1: #遍历 # print(i)
列表的嵌套
l1 = [1, 2, 'taibai', [1, 'alex', 3,]] # 1,将l1中的'taibai'变成大写并放回原处。 l1[2] = l1[2].upper() print(l1) # 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。 l1[-1].append("老男孩教育") print(l1) #不能打印动作 # 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb' l1[-1][1] = l1[-1][1] + "sb" print(l1)
元组的初识(了解)
- 只读列表,不可改。存大量的数据,可以索引,切片(步长);可存储多种数据类型
- 格式: (100, '太白', True, [1, 2, 3])
- where:储存一些重要数据如用户名,密码,个人信息等不想让外部环境修改的一些数据
元组的简单应用(了解)
元组的索引,切片
tu = (100, '太白', True, [1, 2, 3]) print(tu[0]) print(tu[:3])
遍历元组里的每个元素
tu = (100, '太白', True, [1, 2, 3]) for i in tu: print(i)
len:有效长度(元素个数)
print(len(tu)) #打印元组tu的有效长度
.append(谁) : 只有当元组里的元素是list时,才可追加
tu = (100, '太白', True, [1, 2, 3]) tu[-1].append(666) #给tu[-1]追加 print(tu) #不能打印动作
del: #元组tuple 里的东西不可删
del tu[2] print(tu) #报错 # 应用: # 重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组中。
元组的拆包。即分别赋值。
a, b = (1, 2) # 多一个少一个都不行 #与一行代码交换a,b的值区分开!a,b = b,a,见下 print(a,b) #输出结果: 1 2 c = (1,2) a,b = c print(a,b) #输出结果: 1 2 #注:tu(1) int(没有逗号就是它本身) #tu(1,) tuple #有逗号就是元组
#题目:一行代码交换a,b的值----2种方法实现 a = 1 b = 2 a,b = b,a print(a,b) #2 1 #注:a,b = [1,23],[3,45]也可 #输出结果:[1, 23] [3, 45] #元组的拆包: a = 1 b = 2 a,b = (2,1) #分别赋值 print(a,b) #2 1 #小结:虽然2者都能实现,但原理不同??
range:
看作: 一个可以自己控制范围的数字列表; #看作一个列表!!!,实则不是列表.
"顾头不顾腚": range(10)只能打印到数字9,[0,1,2,3,4,5,6,7,8,9];另,首不写,默认0
通常和for循环结合使用
利用for循环,和range遍历1-100之间的数字
for i in range(1,101): #"顾头不顾腚",格式:range(首,尾+1),若不写首,默认首是0. print(i)
利用for循环,和range遍历1-100之间所有的偶数
for i in range(2,101,2): #range(首,尾+1,步长) print(i)
利用for循环,和range倒序打印1-100之间所有的数字
for i in range(100,0,-1) #倒序,尾向尾的方向(向左)顺延1位 print(i)
利用for循环,利用range将l1列表的所有索引依次打印出来 ***
l1 = ['asd', 1, 3, 'asd'] for i in range(len(l1)): #range(0,4)打印出来是[0,1,2,3](不顾腚).即l1各元素的索引!!! print(i) #再for一下遍历出来.
注: len代表元素个数,range代表一可控范围的数字列表;range(len(l1))即用元素个数去控制range的范 围.
注: range打印出来的元素索引,要比len小1.(因为range不顾腚)坑:
for i in range(3): #range(3)代表[0,1,2] pass print(i) #此行与for平齐,故执行完for语句,再执行它;故最后只是2,不是遍历[0,1,2]
结果: 2
列表的初识,列表的索引切片,列表的增删改查,列表的嵌套,元组的初识,range的更多相关文章
- Go 语言 切片的使用(增删改查)
Go 语言 切片的使用(增删改查) 引言Golang 的数组是固定长度,可以容纳相同数据类型的元素的集合.但是当长度固定了,在使用的时候肯定是会带来一些限制,比如说:申请的长度太大会浪费内存,太小又不 ...
- 分布式搜索elasticsearch 索引文档的增删改查 入门
1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful接口URL的格式: http://localhost:9200/ ...
- head插件对elasticsearch 索引文档的增删改查
1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful接口URL的格式: http://localhost:9200 ...
- Elasticsearch 索引文档的增删改查
利用Elasticsearch-head可以在界面上(http://127.0.0.1:9100/)对索引进行增删改查 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演 ...
- 增删改查列表angular.js页面实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- elasticsearch java和_head插件对索引文档的增删改查
利用head插件: 1,创建索引并添加一条数据(yananindex:索引名称,yanantype:索引类型,1:索引id) 2.修改索引数据(索引id1不变,_version是对该索引数据执行了几次 ...
- 初识Hibernate框架,进行简单的增删改查操作
Hibernate的优势 优秀的Java 持久化层解决方案 (DAO) 主流的对象—关系映射工具产品 简化了JDBC 繁琐的编码 将数据库的连接信息都存放在配置文件 自己的ORM框架 一定要手动实现 ...
- 元组,列表的增删改查, for,range 循环
1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append() 2. 删 ...
- Python(二)列表的增删改查
一,列表的增删改查 列表中增加元素: 1,从列表的末尾增加一个元素:append("") 2,从列表中插入一个元素:insert(下标位置,插入的元素) 合并列表: 1,name. ...
随机推荐
- iOS 处理图片的一些小 Tip
UIImage 缓存是怎么回事? 通过 imageNamed 创建 UIImage 时,系统实际上只是在 Bundle 内查找到文件名,然后把这个文件名放到 UIImage 里返回,并没有进行实际的文 ...
- 系统中 CPU 时间片是多久
Windows 系统中线程轮转时间也就是时间片大约是20ms,如果某个线程所需要的时间小于20ms,那么不到20ms就会切换到其他线程:如果一个线程所需的时间超过20ms,系统也最多只给20ms,除非 ...
- Tensorflow学习笔记----模型的保存和读取(4)
一.模型的保存:tf.train.Saver类中的save TensorFlow提供了一个一个API来保存和还原一个模型,即tf.train.Saver类.以下代码为保存TensorFlow计算图的方 ...
- [luogu 2568] GCD (欧拉函数)
题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入样例#1: 4 输出样例#1: 4 ...
- [CodeForces] 543B Destroying Roads
脑洞+暴力. 因为边权是1,所以bfs一下,O(n^2)求任意两点间最短路,再枚举. ans最大是\(dis_{s1,t1}+dis_{s2,t2}\) 再考虑有公共边的情况,一定存在两个点 u, v ...
- zabbix_get 获取agnet端mysql数据失败
问题 在使用zabbix_get获取agent端的mysql数据时,总是报错,ERROR 2002 (HY000): Can't connect to local MySQL server throu ...
- C# 发布APP修改APP图标以及名称
很多时候,我们用C#编程后,都要对我们的上位机生成的图标跟名字进行修改,下面我就 VS2015 怎么修改做个说明. 1.打开项目属性 2.打开应用程序的属性界面,对相应的地方进行修改就可以了 3.修改 ...
- UVALive 5412 Street Directions
Street Directions Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. ...
- Image Processing for Very Large Images
The key idea here is the partial image descriptor VIPS(VASARI Image Processing System) 是近几年逐渐兴起的针对大图 ...
- Oracle 后台进程介绍
一 进程分类: 1.服务器进程(server process): 依据客户请求完毕工作.如接收和处理应用发送的SQL语句 2.后台进程(background process): 随数据库而启动,用于完 ...