一、创建列表,把使用逗号分隔的数据用中括号[  ]括起来即为一个列表,列表也叫数组、list、array;
列表里面也可以再套列表,一个列表里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三维数组,套几层就是几维,定义格式如下:

 list = [] #空列表
list1 = ['小白','小黑','小芳','小华','小高'] #普通数组
list2 = ['小白',['小黑',500],'小芳','小华','小高'] #二维数组
list3 = ['小白',['小黑',500,['anby','joker']],'小芳','小华','小高'] #三维数组

角标、索引
  通过下标可取到列表中的元素,下标从0开始计数,也就是说,比如说一个列表,有个5元素,那么它第一个元素下标就是0,第二个就是1,以此类推,最后一个元素的下标可以写-1,字符串也有下标,和列表一样

二、列表中添加新元素

b = [1,2,3,4]

citys = []

citys.append('北京')  #在列表末尾增加一个元素

citys.insert(0,'上海')  #insert可指定增加的位置,在列表中0的位置即最前面增加一个元素,一次只能加一个,下标不能写负数,如果指定的下标不存在,那么就是在末尾添加

citys.extend(b)  #合并列表 将b列表中的元素添加到citys中

三、查看列表中的值

print(cities[0])  #通过指定下标索引来访问列表中的值,这里0即代表查询列表中第一个元素

print(cities[-1])  #-1代表最后一个元素

print(cities.index('广州')) #获取该元素的下标,如果有多个,则返回第一个,如果找不到该元素的话,会报错

print(cities.count('广州'))  #查看该元素在list里面出现的次数,如果该元素不存在,那么返回0

遍历列表
for i in list :
print(i)

四、修改列表中的值,只能修改已有下标的元素

 list[1]='南京'  #修改指定位置的元素值,指定的下标不存在,会报错,将角标为1的元素值修改为:南京

五、删除列表中的值

cities.pop()  #删最后一个元素

cities.pop(0)  #删除指定下标的元素

cities.remove('北京')  #删除指定的元素,有多个相同的元素,删除第一个

cities.clear()  #清空list

del cities[-1]  #删除指定下标对应的元素 

del cities  #删除整个列表, list删除后无法访问

print(cities.pop())  #有返回值

print(cities.remove())  #无返回值

六、列表操作的函数

list.reverse()将列表反转

#注:list 中有字符串、数字时不能排序,排序针对同类型
list.sort()排序,默认升序 list.sort(reverse=True) 降序排列 len(list) #列表元素个数 max(list) #返回列表元素最大值 min(list) #返回列表元素最小值 list(seq) #将元组转换为列表 list1+list2 #合并list list*3 #复制列表3次

enumerate 用法(打印元素对应的下标),同时取下标和元素

list = ['a','b','c']

for index,value in enumerate(lists):

    print(index,value)

#打印结果如下:
0 a
1 b
2 c

七、列表list的循环和切片
7.1 循环,如果直接for 循环一个list 的时候,那么每次循环的值都是这个list 里面的元素

for i in list:

    print (i)

多维数组,是可以循环多个元素的

w =[[1,2,3,4],[2,3,4,5]]

for a,b,c,d in w:#多维数组,是可以循环多个元素的

    print(a,b,c,d)

7.2 切片,切片也就是另一种方式获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是name:[1:10],格式是name:[1:10],比如说要获取name的第一个元素到第五个元素,就可以用name[0:6],切片是不包含后面那个元素的值的,即顾头不顾尾;前面的下标如果是0的话,可以省略不写,这样写,name[:6],切片后面还有可以写一个参数,叫做步长,也就是隔多少个元素,取一次,默认可以不写,也就是隔一个取一次,切片操作也可以对字符串使用,和列表的用法一样,实例如下:

 name[n:m]  #切片是不包含后面那个元素的值(顾头不顾尾)

 name[:m]  #如果切片前面一个值缺省的话,从开头开始取

 name[n:]  #如果切片后面的值缺省的话,取到末尾

 name[:]  #如果全部缺省,取全部

 name[n:m:s]  #s:步长  隔多少个元素取一次

 #步长是正数,从左往右取

 #步长是负数,从右往左取

 #注:切片同样适用于字符串,字符串也有下标

 lis = list(range(1,21))

 print(lis[:18:-1])  #-1倒序,开头没有取值,所以默认从20往左取值,取到18的下标(19),但不顾尾,所以19不取

 #打印结果:
[20]

八、列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

实例1:要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):list = list(range(1,11))
实例2:生成[1x1, 2x2, 3x3, ..., 10x10]可以用 list = list(x * x for x in range(1,11))
实例3:for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:list = list(x * x for x in range(1,11) if x%2== 0)
实例4:使用两层循环,可以生成全排列:
list = [m + n for m in 'ABC' for n in 'XYZ']
print(list)
输出结果:['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

实例5:for循环其实可以同时使用两个甚至多个变量,比如dict的items()可以同时迭代key和value:
法一:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
... print(k, '=', v)

结果:
y = B
x = A
z = C

九、总结
1,列表是一个有序的对象集合

2,一个对象在另外一个对象中吗?用 in 来检查

3,从列表中删除对象 remove
remove:取一个对象值作为唯一参数。remove方法会从列表中删除指定数据值的第一次出现。
如果在列表中找到了这个数据值,就会从列表中删除包含这个值的对象(同时列表的大小减一)。如果在列表中没有找到这个数据值,会报错。

4,从列表中弹出对象 pop
pop:取一个可选的索引值(indexof)作为参数。pop方法根据对象的索引值从现有列表删除和返回一个对象。
如果调用pop时没有指定索引值,将删除和返回列表中的最后一个对象。如果指定了一个索引值,则会删除和返回那个位置上的对象。
如果列表为空或者调用pop时指定了一个不存在的索引值,会报错。

5,用对象扩展列表 extend 
extend:取一个对象列表作为唯一参数。extend方法接收第二个列表,将其中的各个对象增加到现有列表。如果要将两个列表合并为一个列表,这个方法就非常有用。

6,在列表中插入一个对象 insert/append
insert:取一个索引值和一个对象作为参数。insert 方法将一个对象插入到现有列表中指定索引值的前面。
这样就可以将对象插入到现有列表的开头,或者插入到列表中的任何位置。要把对象插入到列表末尾,用append 。用法 num.insert(2,"abc")

7,如何复制一个数据结构?不要使用赋值操作符复制列表;应当使用copy方法。
赋值操作都指向同一个数据,如果修改一个列表,另一个也会改变;如果想让另一个变量引用一个现有列表,可以使用赋值操作(=)
copy:list2 = list1.copy() ;如果想建立现有列表中对象的副本,用他们初始化一个新列表,就一定要使用copy 方法

8,列表切片的使用【start:stop:step】不包含stop 索引值
step 为正数时,从右至左;step 为负数时,从左至右

十、list小练习
一、检验用户名是否合法需求:
1.输入账号:input
2.如果账号存在,提示:已被注册,如果不存在,提示:注册成功  可先定义一个list来存放所有用户
3.输入不能为空,可以用strip()方法
4.用户名6-12位之间  可用len()方法
5.最多可输入3次,可用循环来控制

all_users =['xianghao','zhangxiaobai','zhangfang']
for i in range(3):
username = input('请输入账号:').strip()
if len(username)>5 and len(username)<13:
if all_users.count(username)>0:
print('该用户名已存在')
else:
print('名字不错,可以注册!')
break
else:
print('用户名长度不合法!长度为6-12之间!')
else:
print('失败次数过多')

二、校验密码需求
1.密码必须同时包含大写字母,小写字母和数字
2.密码长度为5-10位
3.最多输入密码5次

list1 ={'','','','','','','','','',''}
list2 ={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}
list3 ={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'} for i in range(5):
pwd = input('请输入密码:').strip()
password=set(pwd)
if len(pwd) >4 and len(pwd) <11:
if len(password & list1) != 0 and len(password & list2) != 0 and len(password & list3) != 0:
print('密码合法!')
break
else:
print('密码不合法!必须同时包含大写字母,小写字母和数字')
else:
print('密码长度不合法!长度为5-10位!')
else:
print('失败次数过多,请明日再试!')

十一、元祖
元组其实和列表一样,不一样的是,元组的值不能改变,一旦创建,就不能再改变了;元组的定义方式是用小括号( );元组只有两个方法,那就是count和index
如果元组里面 只有一个元素的话,那么你必须在这个元素后面加一个逗号

t = (1,2,4,5,6,7)

words=(1,)

words2=('abc',)

print('t',type(t))

print('words',type(words))

print('words2',type(words2))

print(t.index(2))  #找到元素的下班

print(t.count(2))  #找到元素的个数

Python----list&元祖常用方法总结的更多相关文章

  1. Python之元祖

    Python之元祖 tuple ( ) 元组和列表是一样的.但是,也有区别. 元组只能有读操作.没有修改删除操作. 列表是用中括号 [ ] 表示. 元组是用小括号 ( ) 表示. dir() 把传入的 ...

  2. Python全栈开发:list、元祖常用方法操作

    列表[] 索引与切片#例题#li = ['yijiajun',[1,3,5,7,9],'zhangliang','zhaoritian','sunwukong'] # #例子1 找出列表中索引为0的元 ...

  3. Python中元祖,列表,字典的区别

    Python中有3种內建的数据结构:列表.元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的项目应该包括在方括号中,这样Python就知道 ...

  4. python 中元祖tuple的使用

    Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. eg,  tup1 = (1, 2, 3 ...

  5. 8 Python 数据类型—元祖

    Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 创建空元组 tup1 = () 元组中只 ...

  6. python 列表 元祖 集合

    #####################概念#######################1,什么是列表: 列表由[]表示,里面每一项元素用逗号隔开,里面什么都可以装.能装对象的对象. 列表可以装大 ...

  7. Python day5_tuple元祖的常见方法1_笔记

    # 初识元祖# 1.元祖的一级元素不能被修改,增加,删除,但可以查看,del tu[0]错的# 2.元祖最后一个元素后注意加‘,’,并没有区别,只是为了和方法中元素区别开li=[11,22,33,44 ...

  8. Python字符串/元祖/列表/字典互转

    #-*- coding:UTF-8 -*- #author:RXS002 #1.字典 dict = {'name':'Zara','age':7,'class':'First'} #字典转换为字符串, ...

  9. (Python)元祖、字典

    本节将学习元组.字典,以及其他涉及到的相关知识 1.元组 (tuple) 元组由圆括号括起来,元素之间用逗号相隔.元组是不可变对象,一旦定义了,就不能更改 >>> t=('a','b ...

随机推荐

  1. PHP 内置函数fgets读取文件

    php fgets()函数从文件指针中读取一行 语法: fgets(file,length) 参数 描述 file  必需.规定尧要读取的文件 length 可选 .规定尧都区的字节数.默认是102字 ...

  2. 【Python】【有趣的模块】tqdm | inspect

    tqdm """ [tqdm] 显示循环的进度条,再也不用担心程序跑到哪里还要跑多久了 tqdm 可以直接包裹iterable对象 from tqdm import tq ...

  3. RN 调用安卓的原生方法(实现Toast效果)

    首先明确一点,坑实在是是太多了-神奇呀! ok! 基本思路: 1.用AS打开一个已经存在的项目(这里可以打开项目中的android也可以是android里面的build.gradle) 2.在AS里新 ...

  4. 添加删除tag

    为某个分支打tag git tag -a v1. 9fceb02 删除tag git tag -d test_tag git push origin --delete tag test_tag 推送: ...

  5. vs2015 VS-Visual Studio-IIS Express 支持局域网访问

    使用Visual Studio开发Web网页的时候有这样的情况:想要在调试模式下让局域网的其他设备进行访问,以便进行测试.虽然可以部署到服务器中,但是却无法进行调试,就算是注入进程进行调试也是无法达到 ...

  6. Python中cPickle

    cPickle模块: 在python中,一般可以使用pickle类来进行python对象序列化,而cPickle提供了一个更快速简单的接口,如python文档所说:“cPickle - A faste ...

  7. Could not open ServletContext resource [/WEB-INF/xxx-servlet.xml]

    Could not open ServletContext resource [/WEB-INF/xxx-servlet.xml] 造成这个问题的原因很多,网上的解决思路也很多,比如以下的: http ...

  8. nginx 启动报错 1113: No mapping for the Unicode character exists in the target multi-byte code

    failed (1113: No mapping for the Unicode character exists in the target multi-byte code page) 因为路径有中 ...

  9. stop 用法

    1. stop 文档 $(selector).stop(stopAll,goToEnd) stopAll 可选.规定是否停止被选元素的所有加入队列的动画.goToEnd 可选.规定是否允许完成当前的动 ...

  10. Spark之standalone模式

    standalone hdfs:namenode是主节点进程,datanode是从节点进程 yarn:resourcemanager是主节点进程,nodemanager是从节点进程 hdfs和yarn ...