Python学习3——列表和元组
一、通用序列操作——索引、切片、相加、相乘、成员资格检查
1、索引,正序从0开始为第一个元素,逆序从-1开始,-1为最后一个元素
>>> greeting[0]
'h'
>>> greeting[-1]
'l'
同时如果函数返回的是一个序列,可以直接对其进行索引操作
>>> fourth=input("year:")[3]
year:2019
>>> fourth
''
2、切片:使用索引来访问特定范围内元素,同时可指定步长,中间用冒号分开。切片区间左闭右开。
如果切片结束于最后一个元素,可省略第二个索引;如果切片起始于第一个元素,可省略第一个索引。如果要复制整个序列,两个索引都可省略。
>>> numbers=[0,1,2,3,4,5,6,7,8,9]
>>> numbers[7:10]
[7, 8, 9] >>> numbers[3:]#结束于最后一个元素
[3, 4, 5, 6, 7, 8, 9]
>>> numbers[:3]#起始于第一个元素
[0, 1, 2]
>>> numbers[:]#复制整个序列
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> numbers[:-3]#正数索引和负数索引可混用,此时不要求第一个索引数值小于第二个索引值
[0, 1, 2, 3, 4, 5, 6]
>>> numbers[-3:0]#切片时,如果第一个索引对应的元素位于第二个索引对应的元素的后面,结果为空序列。
[]
>>> numbers[-3:-1]
[7, 8]
>>> nmbers[-1:-3]#索引值统一时要求第一个索引值小于第二个索引值,这是因为步长的原因
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
nmbers[-1:-3]
NameError: name 'nmbers' is not defined >>> numbers[::2]
[0, 2, 4, 6, 8]
>>> numbers[0:10:-2]
[]
>>> numbers[10:0:-2]
[9, 7, 5, 3, 1]
>>> numbers[5::-2]
[5, 3, 1]
>>> numbers[:5:-2]
[9, 7]
3、序列相加
直接使用 + 来拼接序列,但是一般来说不可以拼接不同类型的序列。
>>> [1,2,3]+[7,8,9]
[1, 2, 3, 7, 8, 9]
>>> [1,2,3]+"hello"
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
[1,2,3]+"hello"
TypeError: can only concatenate list (not "str") to list
4、序列乘法
将序列与数x相乘。将重复这个序列x次来创建一个新序列。
>>> "hello"*5
'hellohellohellohellohello'
>>> str="hello"
>>> str*5
'hellohellohellohellohello'
>>> str #不改变原序列,而是创建一个新序列
'hello'
>>> [1,2,3]*5
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> sequance=[None]*10 #用来创建一个长度为10的空序列
>>> sequance
[None, None, None, None, None, None, None, None, None, None]
5、成员资格检查
使用 in运算符检查特定的值是否存在序列中,满足时返回True,不满足时返回False,这样的运算符称之为布尔运算符。
>>> Name=["jiangmeng","zhangsan","lisi"] >>> "jiameng" in Name
True
>>> "wanger"in Name
False >>> name="lalallala"
>>> "a" in name
True
>>> 'laa' in name #对于字符串来说,可以检查是否包含特定的字符串们可以用来过滤垃圾邮件
False
二、列表:Python的主力
列表与字符串和元组的关键区别——列表可变,字符串、元组不可变!
1、list () 函数(实际是一个类),有些情况下使用字符串来创建列表很有用,而且可以将任何序列作为list的参数。
>>> str="hello,python"
>>> list1=[1,2,3]
>>> tuple1=(1,2,3) >>> list(tuple1)
[1, 2, 3]
>>> list(list1)
[1, 2, 3]
>>> plist=list(str)
>>> plist
['h', 'e', 'l', 'l', 'o', ',', 'p', 'y', 't', 'h', 'o', 'n']
>>> ''.join(plist)#将字符列表转换为字符串
'hello,python'
2、基本列表操作——元素赋值、删除元素、切片赋值、
>>> list_temp=[1,2,3,4,5,6] >>> list_temp[1]=1
>>> list_temp
[1, 1, 3, 4, 5, 6] >>> del list_temp[1]
>>> list_temp
[1, 3, 4, 5, 6]
切片赋值——切片是一项极其强大的功能,而能够给切片赋值让这项功能更加强大
>>> name=list("jiameng")
>>> name
['j', 'i', 'a', 'm', 'e', 'n', 'g'] >>> name[3:]=list('boy')
>>> name
['j', 'i', 'a', 'b', 'o', 'y'] >>> name[0:0]=list("name:")#插入新元素
>>> name
['n', 'a', 'm', 'e', ':', 'j', 'i', 'a', 'b', 'o', 'y'] >>> name[1:10]=[]#替换空切片,类似del
>>> name
['n', 'y'] #还可以步长不为1地进行切片赋值,但目前不知道问题出在哪里,没能解决这个问题
3、列表方法——append clear copy count extend index pop remove reverse sort
#append
>>> list1=[1,2,3]
>>> list1.append(4)#只允许有一个对象添加到列表末尾
>>> list1
[1, 2, 3, 4] #clear
>>> list1.clear()
>>> list1
[] #copy 完全复制出来一个副本,而不是将另一个名称list2关联到list1列表
>>> list1=[1,2,3]
>>> list2=list1.copy()
>>> list2[0]=0
>>> list1
[1, 2, 3]
>>> list2
[0, 2, 3] #count 用来计算指定元素在列表中出现了几次
>>> list1=list("hello,python!I love you!")
>>> list1
['h', 'e', 'l', 'l', 'o', ',', 'p', 'y', 't', 'h', 'o', 'n', '!', 'I', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u', '!']
>>> list1.count('l')
3
>>> list1.count("ll")
0 #extend 使用一个列表来扩展另一个列表,区别于序列拼接,这里是修改被扩展序列,而不是产生一个新的序列
>>> a=list('jia')
>>> b=list('meng')
>>> a.extend(b)
>>> a
['j', 'i', 'a', 'm', 'e', 'n', 'g']
>>> b
['m', 'e', 'n', 'g'] #index 在列表中查找出指定值第一次出现的索引
>>> a=list('hello,python')
>>> a
['h', 'e', 'l', 'l', 'o', ',', 'p', 'y', 't', 'h', 'o', 'n']
>>> a.index('l')
2
>>> a.index('a')
Traceback (most recent call last):
File "<pyshell#114>", line 1, in <module>
a.index('a')
ValueError: 'a' is not in list #insert 将一个对象插入列表,有两个参数
>>> numbers=[1,2,3,5,6]
>>> numbers.insert(3,4)
>>> numbers
[1, 2, 3, 4, 5, 6] #pop 删除一个元素,默认是最后一个元素,并返回这个元素,pop是唯一既修改列表有返回一个非None值的列表方法。Python不提供push,但可以使用append来代替
>>> numbers
[1, 2, 3, 4, 5, 6]
>>> numbers
[1, 2, 3, 4, 5, 6]
>>> numbers.pop()
6
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers.pop(0)
1
>>> numbers
[2, 3, 4, 5] #remove 用于删除第一个为指定值的元素 就地修改,不返回值
>>> characters=['hello','byebye','hello']
>>> characters.remove('hello')
>>> characters
['byebye', 'hello'] #reverse 反序排列列表元素 就地修改不返回值
>>> numbers=[1,2,3,4]
>>> numbers.reverse()
>>> numbers
[4, 3, 2, 1] #sort 就地排序,不返回值 稳定排序算法
>>> x=[1,8,5,3,7,9,4]
>>> x.sort()
>>> x
[1, 3, 4, 5, 7, 8, 9] #sorted
>>> x=[1,8,5,3,7,9,4]
>>> y=sorted(x)
>>> y
[1, 3, 4, 5, 7, 8, 9]
>>> x
[1, 8, 5, 3, 7, 9, 4] #高级sort sort可以接受两个参数key reverse
#一般情况下把key设置为一个自定义函数用于排序,类似cmp这样的函数
>>> x=['hahah','jkjkjkjkjkj','lalal']
>>> x.sort(key=len)
>>> x
['hahah', 'lalal', 'jkjkjkjkjkj']
#对于reverse只需要将其指定为一个真值(True或False),以指出是否要按相反顺序对列表进行排序,True要逆序 从大到小 False不要逆序从小到大
>>> numbers=[4,8,6,2,3,7,9]
>>> numbers.sort(reverse=True)
>>> numbers
[9, 8, 7, 6, 4, 3, 2]
>>> numbers.sort(reverse=False)
>>> numbers
[2, 3, 4, 6, 7, 8, 9]
三、元组
元组,只需要将一些值按照逗号分开就可以创建一个元组。同时元组与列表很像,只是不能修改
>>> 1,2,3
(1, 2, 3)
>>> 1,
(1,)
>>> 1
1
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
>>> ()
()
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple("jiameng")
('j', 'i', 'a', 'm', 'e', 'n', 'g')
>>> tuple((1,2,3))
(1, 2, 3)
元组可以用作映射中的键,而列表不可以,有些内置函数或者方法返回元组。
Python学习3——列表和元组的更多相关文章
- Python学习_03_列表、元组、字符串
列表.元组.字符串这些通过顺序访问的对象统称为序列. 序列的标准操作符 对于一般的序列对象,包括列表.元组.字符串,都具有以下的标准操作: 1. element [not] in seq判断一个元素是 ...
- Python学习:列表、元组、字典、集合
转载:https://www.cnblogs.com/xc-718/p/9632942.html 列表/元组 列表和元组都是序列结构,它们本身很相似,但又有一点不同: 列表是用方括号标记,如:a=[1 ...
- python学习之列表和元组
配置环境:python 3.6 python编辑器:pycharm,代码如下: #!/usr/bin/python # -*- coding: UTF-8 -*- # list:是一种有序的集合,可以 ...
- Python学习笔记----列表、元组和字典的基础操作
文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...
- Python 学习笔记(1)Python容器:列表、元组、字典与集合
Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...
- Python学习2-列表和元组
Python学习2-列表和元组 标签(空格分隔): 列表 元组 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号--即元素的位置,也称为索引.索引从0开始. ...
- python第二天 列表、元组
今天学习了列表.元组相关的知识:与C中的数组列表相似,元组为只读列表: 以及切片相关操作: #!usr/bin/env python #-*-coding:utf-8-*- # Author calm ...
- Python学习02 列表 List
Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...
- python基础之列表list元组tuple
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...
随机推荐
- AcWing:241. 楼兰图腾(树状数组逆序对)
在完成了分配任务之后,西部314来到了楼兰古城的西部. 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自 ...
- static关键字的用法小结
static:是一个修饰符,用于修饰成员(成员变量,成员函数). 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用,写法:类名.静态成员 static特点: 1.随着 ...
- 自定义镜像mycentos
1.编写 1).Hub默认CentOS镜像是什么情况 2).编写Dockerfile文件 2.构建 3.运行
- 设置Python打印格式
>>> def esc(code): ... return f'\033[{code}m' ... >>> print(esc('31;1;4') + 'reall ...
- getBoundingClientRect使用指南
getBoundingClientRect使用指南 author: @TiffanysBear 主要介绍getBoundingClientRect的基本属性,以及具体的使用场景和一些需要注意的问题. ...
- BOM相关方法及属性
browser objec tmodel浏览器对象模型 BOM里面的方法大多在window对象底下,window代表窗口,也就是说,在BOM里面大多调用window下面的东西. 1.open方法是wi ...
- rc.local 注意事項,call python script, file position
如果要在 rc.local 呼叫 python script python script 的位置需使用絕對路徑 其 python script 裡的有關 file 的位置也需使用 絕對路徑 如果要在 ...
- LC 985. Sum of Even Numbers After Queries
We have an array A of integers, and an array queries of queries. For the i-th query val = queries[i] ...
- kvm管理工具Webvirtmgr安装
虚拟机版本vmware workstation 15.5.0 pro (也就是linux版) cat /etc/redhat-release CentOS Linux release 7.4.17 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_18-页面静态化-模板管理-GridFS研究-取文件
需要创建mongoDB的配置类1 配置类里面主要创建.GridFSBucket这个对象.这个对象的作用就是用来打开一个下载流 在cms的微服务下,在config下创建MongoConfig.这个时候就 ...