列表基本使用&系统功能

一、列表【重点掌握】

1.概念

变量:使用变量存储数据,但是,缺点:一个变量每次只能存储一个数据 ,num = 10 name = “aaa”

思考:如果一次性存储多个数据,怎么做?

实际问题:存储5个人的年龄,求他们的平均年龄,按照以前的方式解决:

age1 = 10
age2 = 18
age3 = 9
age4 = 15
age5 = 20
average = (age1 + age2 + age3 + age4 + age5) / 5

继续思考:如果要存储100,甚至1000个人的年龄呢?

解决方案:此时采用定义变量的方式会显得很麻烦,而Python提供了一种解决方案,使用列表进行多个数据的存储

作用:列表相当于是一个容器,可以同时存储多种类型的数据

本质:列表是一个有序的,可以存储重复元素的集合

说明:有序指的就是有顺序【数据的存放的顺序和底层存储的顺序是相同的】

# 1.变量
# 定义变量的过程就是在内存中开辟空间的过程
age = 10
"""
工作原理:
    a.内存空间根据用途被划分为不同的区域,包括:栈,堆,方法区,静态域
    b.age = 10,age会占用栈空间,10会占用堆空间  
"""

age1 = 10
age2 = 18
age3 = 9
age4 = 15
age5 = 20

# 2.列表
numlist = [10,18,9,15,20]

"""
作用:列表相当于是一个容器,可以同时存储多种类型的数据

本质:列表是一个有序的,可以存储重复元素的,可以存储不同类型数据的,可变的集合

说明:有序指的就是有顺序【数据的存放的顺序和底层存储的顺序是相同的】
"""
2.基本使用
2.1定义列表

定义一个列表相当于定义一个列表类型的变量

变量名 = 值

语法:列表名 = [数据1,数据2,数据3…]

说明:

​ a.列表名其实就是一个变量名【标识符】,注意:尽量不要直接使用list【系统有一个功能list(x)】,使用listxxx

​ b.[]是列表特有的表示方式

​ c.数据1,数据2,数据3被称为元素

​ d.列表中的元素会被自动编号,从0开始,该编号被称为索引,下标或者角标

​ e.索引的取值范围:0 ~ (元素个数 - 1)

​ -1 ~ -元素个数

# 1.定义一个空列表
# 注意1:列表的命名不要直接使用list,原因:系统有一个功能为list()
list1 = []
print(list1)


# 2.定义一个非空的列表
# 注意2:列表是有序的,数据的存放的顺序和底层存储的顺序是相同的
# 注意3:列表中允许重复元素存在
list2 = [2,3,3,4,3,3]
print(list2)


# 注意4:同一个列表中可以同时存储不同类型的数据
list3 = ["a",True,45,46.67,[45,6,7]]
print(list3)

list4 = ['aaa','gagag','hello']
print(list4)
2.2列表元素访问
# 1.
list1 = [10,20,30]
# 10,20,30被称为元素

# 注意1:但凡一个数据类型中的元素是有序的,则该数据类型都有索引/下标
# 注意2:像列表这种有序的数据类型,如果要获取其中的元素,则可以通过索引获取


# 2.获取元素,语法:列表名[索引]
list2 = [11,22,33,44,55,66]
# 获取整个列表,list2是一个变量名【引用】,指向存储了指定数据的列表,其中存储了列表的地址
print(list2)
# 获取列表中的第1个元素,list2[1]相当于是一个引用,指向列表中的22数据,其中存储了22的地址
print(list2[1])

print(id(list2[1]))
print(id(22))

# 3.索引的取值范围
list3 = [11,22,33,44,55,66]
# 注意3:索引可以表示为正数或者负数,取值范围:0~长度 - 1    或者  -1~ - 长度
"""
正索引  0  1  2  3  4   5
负索引 -6  -5 -4 -3 -2 -1
      11,22, 33,44,55,66
"""
print(list3[5])
print(list3[-1])

print(list3[0])
print(list3[-6])

# 注意4:访问列表元素的时候,一定要注意索引的取值范围,否则会导致索引越界
# print(list3[10])   # IndexError: list index out of range
# print(list3[-8])    # IndexError: list index out of range


# 4.修改列表中的元素
# 注意5:列表是可变的,其中的元素可以随时增加,删除或修改
list4 = [11,22,33,44,55,66]
print(list4)
list4[1] = 100
print(list4)
2.3列表基本操作
# 1.+,两个列表可以使用+进行元素的整合,会生成一个新的列表,对原列表没有任何影响
list1 = [3,4,5]
list2 = ['a','b','c']
print(list1  + list2)
print(list2 + list1)
print(list1)
print(list2)


# 2.*,将一个列表中的元素重复指定的次数,生成一个新的列表,对原列表没有任何影响
print(list1 * 3)
print(list1)


# 3.in和not in:判断元素在列表中是否存在
print(2 in list1)
print(2 not in list1)

print(4 in list1)
print(4 not in list1)

# 4.遍历列表
# 遍历:依次获取一个列表中的所有元素
list3 = [11,22,33,44,55,66]
# print(list3[0])
# print(list3[1])
# print(list3[2])
# print(list3[3])
# print(list3[4])
# print(list3[5])

# 方式一:for,直接获取元素            *****
for n1 in list3:
    print(n1)

# 方式二:for,获取索引                *****
for i in range(len(list3)):
    print(i,list3[i])

# 方式三:while
a = 0
while a < len(list3):
    print(a,list3[a])
    a += 1

# 方式四:enumerate()                               ******
# 枚举:其中的数据是以索引和数据的映射关系存储的
# print(list(enumerate(list3)))
# num1,num2 = (34,56)
# print(num1,num2)

# for r in enumerate(list3):
#     print(r[0],r[1])

for index,num in enumerate(list3):
    print(index,num)


# 练习1:获取下面列表中为奇数的元素
list1 = [11,22,33,44,55,66]
for m in list1:
    if m % 2 == 1:
        print(m)

# 练习2:获取下面列表中索引为奇数的元素
list1 = [11,22,33,44,55,66]
for i in range(len(list1)):
   if i % 2 == 1:
       print(list1[i])
3.系统功能
函数说明
len(list)获取列表元素个数
max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将元组转换为列表
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(seq)从列表中找出某个值第一个匹配项的索引位置
list.insert(index,obj)将对象插入列表
list.pop(index)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort(key=None,reverse=False)对原列表进行排序
list.copy()复制列表
list.clear()清空列表
3.1增
# 1.append(),追加,在已知列表的末尾追加一个元素    *******
list1 = [11,22,33]
print(list1)
# 追加单个元素
list1.append(44)
print(list1)
# 追加多个元素,注意:只能通过容器的方式进行追加,但是,整个容器整体会被添加到列表中
# list1.append(55,66,77)   # TypeError: append() takes exactly one argument (3 given)
list1.append([55,66,77])
print(list1)

print("*" * 30)

# 2.extend(),扩展,在已知列表的末尾添加元素
list1 = [11,22,33]
print(list1)
# 追加单个元素
# 注意1:可迭代对象包括的数据类型有:list   tuple   dict   set   str等
# 注意2:通过extend向列表中添加元素,只能添加可迭代对象
# list1.extend(44)    # TypeError: 'int' object is not iterable整型不是可迭代对象

# 注意3:通过extend向列表中添加一个可迭代对象,只会讲可迭代对象中的元素添加到列表【打碎加入】
list1.extend([44])
print(list1)
list1.extend([55,66,77])
print(list1)

print("*" * 30)

# 3.insert(),插入,在列表指定位置插入指定元素
list1 = [11,22,33]
print(list1)
# 追加单个元素
list1.insert(1,100)
print(list1)  # [11, 100, 22, 33]
list1.insert(2,[55,66,77])
print(list1)  # [11, 100, [55, 66, 77], 22, 33]


# 【面试题】通过append或extend向列表中添加元素,有何不同?
3.2删
# 1.remove(),移除    ******
# 特点:直接移除元素,但是,执行一次remove只能移除一个指定元素
list1 = [11,22,33,44,22,22,22,55]
print(list1)
list1.remove(22)
print(list1)
list1.remove(22)
print(list1)
r1 = list1.remove(22)
print(list1)
r2 = list1.remove(22)
print(list1)

print(r1,r2)

print("*" * 30)


# 2.pop(index),弹出,index可以省略
# 特点:如果省略index,默认删除最后一个元素,如果未省略index,则删除指定索引处的元素
# pop可以将被删除的元素返回
list1 = [11,22,33,44,22,22,22,55]
print(list1)
r1 = list1.pop()
print(list1)

r2 = list1.pop(3)
print(list1)

print(r1)
print(r2)


# 3.clear(),清除
list1 = [11,22,33,44,22,22,22,55]
print(list1)
list1.clear()
print(list1)   # []

# 问题:
list1 = [11,22,33,44,22,22,22,55]
list1.clear()   # []
del list1
3.3改
# 注意:reverse()和sort()都是在原列表的基础上直接修改的

# 1.reverse():反转/翻转                     *****
list1 = [11,22,33,44]
print(list1)
list1.reverse()
print(list1)


# 2.sort():排序,分为升序和降序,默认为升序      *****
# a.升序
list1 = [2,4,5,7,100,5,45,29]
print(list1)
list1.sort()
print(list1)

# b.降序
# 方式一
list1 = [2,4,5,7,100,5,45,29]
print(list1)
list1.sort()
list1.reverse()
print(list1)

# 方式二
list1 = [2,4,5,7,100,5,45,29]
print(list1)
list1.sort(reverse=True)
print(list1)

# c.key自定义排序规则
# 注意:字符串排序,依据的是ASCII码表
list2 = ['faaga','gag','64w5375','hellobab','aghuaakg']
# list2.sort()
# print(list2)

# 依据字符串的长度排序
list2.sort(key=len)
print(list2)
3.4查
# 1.len():获取列表的长度  或者 获取列表中元素的个数    ******
list1 = [34,4,6,5,7,8,8]
print(len(list1))

# 2.min()/max():求列表中的最值
print(max(list1))
print(min(list1))


# 3.count():统计一个元素在列表中出现的次数        *****
list1 = [34,4,6,8,8,8,8,5,7,8,8]
print(list1.count(8))
print(list1.count(4))


# 4.index():获取一个元素在列表中第一次出现的索引    ******
list1 = [34,4,6,8,8,8,8,5,7,8,8]
print(list1.index(8))

# print(list1.index(100))  # ValueError: 100 is not in list

# 5.list()
print(list("hello"))
print(list(range(10)))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值