python入门到精通(二)|列表的使用方法

一、列表

1.什么是列表 (list)
1)列表是由一系列按特定顺序排列元素组成的序列。
2)在Python中用[ ] 做为定界符,用逗号作为元素的分隔符。
3)列表里面也可以再嵌套列表,一个列表里面嵌套一个列表,叫二维数组;一个里面嵌套一个列表,里面的列表再嵌套一个列表,这个叫三维数组,嵌套几层就是几维。
定义格式如下:

list = [] #空列表
 list1 = ['小白','小黑','小芳','小华','小高'] #普通数组 一维列表
 list2 = ['小白',['小黑',500],'小芳','小华','小高'] #二维数组
 list3 = ['小白',['小黑',500,['anby','joker']],'小芳','小华','小高'] #三维数组
  1. 列表的特点
    (1)列表是有序可变化。
    (2)列表的数据类型可以是任意类型(基础类型,结构数据类型)
    (3)一个列表可以嵌套另一个列表,形成多维列表(数组)。

二、列表的空间结构

1.创建一维列表
一维空间地址:
A=[12,34,56,78,90,54,43,[1,2,3,4]]
在这里插入图片描述

说明:
(1)列表的索引(index)和下标地址一致
(2)下标地址正向从零开始,反向从-1开始
(3)List 采用双向下标地址访问数据
案例: 定义和访问列表a ,访问列表数据

a=[23,12,45,67,89,[1,2,3,3,4]]
print(a)
print("下标为0=",a[0])
print(a[2],a[3],a[5])
print(a[-1],a[-2],a[-0])
 
b=["abc",23,45,[1,2,3],'你懂了吗',(12,34,56)]
print(b)
print(b[0],b[3])

2.创建二维列表: 就是一维列表中嵌套一维列表
格式 b=[[1,2,3],[4,5,6],[7,8,9]]
二维地址方式 [+、-行地址][ +、-列地址]

在这里插入图片描述
2.1规则的二维列表

e=[[1,2,3],[4,5,6],[7,8,9]]
print(e[0][0])
print(e[1][0])
print(e[2][0])
print(e[1][1])

2.2 不规则的二维列表

d=[123,456,"abc",[45,67,89],90,100]
print(len(d))
print(d[0])
print(d[2][1])
print(d[3][1])
f=[[23,45,67],90,100,"xyz",[2,3,4,[45,67,"afbfdsaf"],90],90]
print(f[0][2],f[0][0])
print(f[2])
print(f[3][0])
print(f[4][1])
print(f[4][3][0])
print(f[4][3][2][3])
print(f[-1])
print(f[-2])
print(f[-2][-2][-1])
print(f[-2][-2][-1][1])

3.循环迭代访问法
格式 1 for i in list:
i

格式 2: 迭代器 iter

d=[56,78,90,23,[1,2,['a','b',"c"],4,5,6],100]

for i in d:
    print(i)

x=iter(d)
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))
print(next(x))

三、列表的常用操作

  1. 获取元素的下标地址
    a.index(67)
    功能:求一维列表下标地址
    ValueError: 100 is not in list
  2. 改变元素的值
    格式: list[下标地址]=值
    功能: 改变指定下标的值
    特点:字符串数据作为一个整体可以修改,字符串内容不能单独修改。
  3. 删除元素或删除列表
    格式 del list[下标地址]
    功能:删除指定下标的元素
    格式 del list
    功能:删除列表

案例

 x=["我在学校",[12,34,56],98.76,67.23,66]
 '''正向操作'''
print(x)
x[2]="我们修改了Python的菜鸟"
print(x)
del x[3]
print(x)

'''反向操作'''
print(x)
x[-1]=1000000000
x[-0]=34454

print(x)
del x[-3]
print(x)
del x

  1. 列表的加法和乘法
    (1)加法
    格式 list1+list2+list3=
    功能 将几个列表首尾相连,创建一个新列表
    (2)乘法
    格式 list*n
    功能 将list复制N遍,形成一个新列表。
    案例
a=["123","我们在大学"]
b=[67,89,(1,23,34,4),{34,56,78}]
c=["a",100,200,300,400]
print(a, b,c)
d=a+b+c
print(d)
print(a*5)
print(b*3)

四、列表的内置函数

(1)len()
格式: len(list)
功能: 求list的长度,元素的个数就是长度。
(2)max()
格式: max(list)
功能: 求list中元素的最大值。
(3)min()
格式: min(list)
功能: 求list中元素的最小值。
(4)copy()
格式: list.copy()
功能: 将自己复制一份。
(5)count()
格式: list.count(值)
功能: 求list中相同元素的个数。
案例

c=[100,200,300,789.7,2345.6,100 ,400,500,400,345,788,400,999999,23]
print("c列表的长度: %d"% len(c))
print("c列表中最大值: %f"% max(c))
print("c列表中最小值: %f"% min(c))
print("c列表中100元素的出现的次数: %d"% c.count(100))
print("我复制一份给列表S")
S=c.copy()	
print("S列表中的值如下: ")
print(S)

五、列表的插入操作

(1)尾部追加元素
格式 list.append(对象)
功能 将某个对象添加在列表的尾部。
说明 只能插入对象,每个对象作为一个元素插入尾部。
(2)尾部扩展元素
格式 list.extend (对象)
功能 将某个对象扩展在列表的尾部。
说明 只能插入对象,每个对象中数据被分解为单个数据,插入到列表的尾部。
发生异常TypeError: ‘int’ object is not iterable
对象是: 可迭代的对象
(3)任意插入元素
格式 list.insert (下标地址,值)
功能 在列表的任意位置添加元素,当前位置的元素后移一个位置。
说明 每个元素(包括对象) 只插入一个位置。
案例

c=[100,200,300]
print(c)
c.append("abc")
c.append([45,3,12])
c.append((34,56,7,7))
print(c)

c.extend("我们在哪插入数据")
print(c)
c.extend([23,45,23,4545])
print(c)
c.extend({2,3,4,5,5,6,67,7})
print(c)
c.extend('''我是最帅的小孩''')
print(c)
d=[100,200,300]
d.insert(2,"我来到你的位置")
print(d)
d.insert(2,{12,34,5,566,7})
print(d)
d.insert(0,18)
print(d)
d.insert(3,45.6)
print(d)

六、列表的移出、出栈等操作

(1) 移出元素
格式 list.remove(值)
功能 移出指定的值,列表长度减一。
(2)出栈元素
格式 list.pop (下标地址)
功能 出栈指定下标地址的值,列表长度减一。
格式 list.pop ()
功能 出栈栈顶的值,列表长度减一。
(3)清空元素
格式 list.clear ()
功能:清空元素,列表长度为0。
(4)栈空间结构图
在这里插入图片描述
入栈push:就是给栈顶存储数据,栈的长度加一
出栈pop :就是将栈中某个元素移除,栈的长度减一。
移除remove: 就是任意移除栈元素
案例

y=[23,45,67,89,90]
print(y)
y.pop()
print("这个栈的栈元素你看了没有")
print(y)
y.pop(1)
print(y)'''
print(y)
y.remove(67)
print(y)
y.remove(23)
print(y)
y.clear()
print(y)
print("y的长度=",len(y))

七、列表的排序

(1)列表的三种序列
正序 : 从小到大排序
乱序: 打乱顺序
反序: 从大到小排序
(2)正序
格式 list.sort();
功能: 从小到大排序
格式 y=sorted(列表名)
功能: 创建一个新的正序列表,原列表内容不变。
(3)反序
格式 list.reverse ();
功能: 从大到小排序,
(4)乱序
使用的模块 Random 中的shuffle()
格式 import random
Random.shuffle(list)
功能 将列表随机打乱排序
案例

import  random
y=[23,45,67,89,90,765,12,3,-378]
print("排序前列表情况:")
print(y)
print("正序排序列表情况:")
y.sort()
print(y)
print("反序排序列表情况:")
y.reverse()
print(y)
print("乱序排序列表情况:")
random.shuffle(y)
print(y)
random.shuffle(y)
print(y)
random.shuffle(y)
print(y)

八、切片操作

切片,切片是另一种获取列表值方式,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值。

格式: list[起始位置:结束位置:步长]
功能: 从起始位置到结束位置按步长访问列表中的元素。
说明: 切片从地址位置切取数据

经典格式
(1) 切片全部数据

  print(a)
print(a[:])
print(a[::])
List[0:n]  
 (2)在一个区间中,按指定步长,切取某些数据"
print(a)
print(a[0:3:1])
print(a[0:10:1])
print(a[0:10:2])
print(a[0:10:3])
print(a[::2])
print(a[:3])
print(a[::5])

(2) 在一个区间中,按指定步长,反向切取某些数据"

print(a)
print(a[::-1])
print(a[:-3])
print(a[:6])

print(a[::-3])
print(a[::-5]) 

九、递推表达式

(1)格式

 Expression  for  var1  in  sequnce1 
            for  var2 in  sequnce2 
for  var3  in  sequnce3
if  condition

功能: 利用地推表达式创建列表的元素
说明: Expression :创建元素的表达式
var1 : 表达式中分量
if condition : 带过滤的条件
condition: 条件表达式

c=[1,2,3]
x=[23,56,78]
p=[100,200,300]
y=[(w*z*v) for w in c for z in x for v in p if i*j*z >= 22400]

说明:
1 (wzv) 是递推表达式 :
可以是排列组合(I,j,z), 数学表达式(i*j+z)
2 w : 是个变量, 参加表达式运算的变量,它来自于谁(列表,字符串)
3.for w in c :变量w来自于列表C, 如果有多个变量必须写它的来源
4. if i *j*z >= 22400 过滤器: 就是带条件的创建元素

k=[1,2,3]
o=[23,56,78]
t=[(i*j) for i in k for j in o ]
t1=[(i*j) for i in k for j in o if (i*j)>150]
print(t)
print(t1)

十、列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
实例1:要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用

A=list(range(1, 11)):
list1 = list(range(1,11))

实例2:生成[1x1, 2x2, 3x3, …, 10x10]可以用

list2 = list(x * x for x in range(1,11))

实例3:for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

list3 = list(x * x for x in range(1,11) if x%2== 0)

实例4:使用两层循环,可以生成全排列:

          list4 = [m + n for m in 'ABC' for n in 'XYZ']
         print(list)

输出结果:[‘AX’, ‘AY’, ‘AZ’, ‘BX’, ‘BY’, ‘BZ’, ‘CX’, ‘CY’, ‘CZ’]
———————————————————————————————————————
今天就分享到这里啦!以后没有特殊情况的话会每天更新一篇,由于现在还有点没搞懂这个csdn的写作方法,有些地方会出现排版错误,在这里先给大家道个歉哈,大家如果喜欢我的干货,可以点赞关注一下。谢谢大家啦!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辣条哟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值