IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python基础学习——列表详解 -> 正文阅读

[Python知识库]Python基础学习——列表详解

Python基础学习——列表详解

1. 列表的生成和遍历

1.1 列表的定义

  • 列表的生成语法
# 定义一个空列表
list1=[]
# 构造器方法
list2=list()
# 字面量方法
list3=['tian''yu''平']
# 列表生成式方法(推导式方法)
nums=[i for i in range(10)]

在构建列表时常选用列表生成式方法来提高效能

2.2 遍历列表

  • 直接打印
l=[1,2,3]
print(l)
  • 遍历列表的方法
# 方法1
for i in range(len(list2)):
    print(list2[i],end=' ')

# 方法2
for x in list2:
    print(x,end=' ')

# 方法3
for i,x in enumerate(list2):
    print(i,x,end=' ')

常用方法3,既可以得到列表的元素,又可以获取下标。

3.3 列表的索引和切片

  • 列表的索引,index————[::]—>开始索引(默认为0):结束索引(默认为列表长度):步长(默认为1)
  • 注意列表的索引从0开始
  • 列表索引包括正向索引和负向索引
# 构造列表
nums=[i for i in range(10)] 
print(nums)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 索引获取元素
print(nums[2]) # nums列表中的第三个元素—————>2
# 索引支持从后往前取
print(nums[-1]) # nums列表中的最后一个元素——————>9

# 切片获取元素
print(nums[:]) # 获取列表中所有元素
print(nums[1:]) # 获取从第2个元素到最后一个元素
print(nums[::-1]) # 实现逆转
  • ord():查看字符对应编码

  • chr():将编码处理成对应字符

由于篇幅问题,其它情况就不一一列出,还需多加练习列表的切片和索引取获取元素

2. 列表的常用方法

2.1 插入元素方法

  • 插入元素的方法:append()追加元素、insert()插入元素
list1=[1,2,3]
list1.append(4)
# 在列表指定位置插入元素
list1.insert(2,6)

2.2 删除元素方法

  • 删除元素的方法:remove()、clear()清空元素
list1=[1134]
# 默认删除最后一个
list1.pop()
# 删除指定元素
list1.remove(1) #默认删除第1个
list1.clear()# 直接清空元素

2.3 查看元素是否存在返回索引

# 查找元素是否存在,返回索引
list=['tian', 'yu', 'ping']
num=list.index('tian') # 如果该元素不存在会出现 “ValueError: 'tia' is not in list”错误
print(num)
# 防止出现报错,解决如下:
if 'tian' in list:
    print(list.index('yu'))
# 统计某个元素在列表中出现的次数
print(list.count('yu'))

2.3 对列表元素排序、反转和统计元素个数

  • 列表元素反转
list1=['tian', 'yu', 'ping']
list1.reverse()
print(list1)
  • 列表元素排序
list2=[1,23,4,5]
# reverse=True-->降序
list2.sort(reverse=True)
print(list2)
  • 统计某个元素出现的个数
list1=[1,3,3,32,3]
print(list1.count(3)) # 3

3. 列表的运算

  • 重复运算
l=[0]*10 # 对列表重复10次
  • 比较运算,从左到右,当到某个元素以经比较出结果就不在继续下去
list1=[1,2,3,4]
list2=[1,2,3,4,5]
# 列表扩展/合并
list3=list1+list2
# 返回值要么为False,要么为True
print(list1 == list2) # False
print(list1 >= list2) # False
print(list1 <= list2) # True
  • 注意字符串列表和数字列表的比较
list1 = [1, 2, 3, 4]
list2 = ['1','2','3','5']
# print(list1 <= list2) # TypeError: '<=' not supported between instances of 'int' and 'str'
list2=[int(i) for i in list2]
print(list1 <= list2) # True

4. 用于列表的排序算法

4.1 简单选择排序

# 简单选择排序
nums = [1, 23, 54, 34, 42]

for i in range(len(nums) - 1):
    min_value, min_index = nums[i], i
    for j in range(i + 1, len(nums)):
        if nums[j] < min_value:
            min_value, min_index = nums[j], j
    nums[i], nums[min_index] = nums[min_index], nums[i]
print(nums)

4.2 冒泡排序

# 冒泡排序
nums = [1, 23, 54, 34, 42]
for i in range(1, len(nums)):
   
    for j in range(len(nums) - i):
        if nums[j] > nums[j + 1]:
            nums[j + 1], nums[j] = nums[j], nums[j + 1]
         

4.3 改进版冒泡排序

nums = [1, 23, 54, 34, 42]
for i in range(1, len(nums)):
    swapped = False # 标识是否发生交换,如果不发生交换就可以认为已经有序
    for j in range(len(nums) - i):
        if nums[j] > nums[j + 1]:
            nums[j + 1], nums[j] = nums[j], nums[j + 1]
            swapped = True
    if not swapped: # 没有交换就终止循环
        break

5. 列表经典编程题的应用

5.1 幸运的女人

30个人,其中15个男人15个女人坐船出海,结果船坏了。需要把其中15个人扔到海里,其他人才能够存活下来;所有人围成一圈,有某个人开始
报数,报到9的就被扔下海里,接着从1开始报数,直到将15个人仍下海。最后,15个女人都存活下来,15个男人被仍下海。
问原先那些位置是男人,那些位置是女人?

  • 方法1
persons = [True] * 30
# print(persons)
# index:获取persons索引  counter:计数扔掉人数   number:实现报数
index, counter, number = 0, 0, 0
while counter < 15:
    if persons[index]:
        number += 1
        if number == 9:
            persons[index] = False
            counter += 1
            number = 0
    index += 1
    if index == 30:
        index = 0
for person in persons:
    # 三元运算
    print('女' if person else '男', end=' ')

print('\n','*'*100)

  • 方法2
persons=[i for i in range(1,31)]
for _ in range(15):
    persons=persons[9:]+persons[0:8]
for i in range(1,31):
    print('女' if i in persons else '男',end=' ')

5.2 扑克牌游戏发牌模拟

用一个列表保存54张扑克牌,洗牌,按斗地主的发牌方式把牌发给三个玩家,
多的3张牌给第一个玩家(地主),把每个玩家手上的牌显示出来。

import random
nums=[i for i in range(2,11) ]
others=['J','Q','K','A']
colors=['黑桃','红桃','方块','梅花']
cards=[str(i)+j for i in range(2,11) for j in colors]+[i+j for i in others for j in colors]
cards=cards+['B','S']
print(len(cards))
# print(cards)
# print(len(cards))
random.shuffle(cards)
# print(cards)
user1_game=[]
user2_game=[]
user3_game=[]
for i in range(0,len(cards)-3,3):
    user1_game.append(cards[i])
    user2_game.append(cards[i+1])
    user3_game.append(cards[i+2])
user1_game=user1_game+cards[-1:-4:-1]
print('第一个玩家的牌:\n',user1_game)
print('第二个玩家的牌:\n',user2_game)
print('第三个玩家的牌:\n',user3_game)

6. 列表中的统计学

注意以下函数都是基于random库下

  • sample()函数可以实现对列表元素无放回抽样
import  random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
person=random.sample(persons,3)
print(person)
  • choices()函数可以对列表元素有放回抽样(可以重复抽中)---->返回一个列表
import  random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
for _ in range(2):
    person=random.choices(persons,k=2) # 必须指定k的值
    print(person)
# ['longlue', 'longlue']
# ['beijing', 'jinghai']
  • choice()函数可以从列表中随机选取一个元素
import  random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
person=random.choice(persons)
print(person) # wangliang
  • shuffle()函数可以实现列表元素随机乱序
import  random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
random.shuffle(persons)
print(persons)
# ['jinghai', 'lisan', 'wangliang', 'longlue', 'beijing', 'lihua']

7. 总结

通过列表的学习,基本上能够解决一些基本的 问题,但列表的运用是非常灵活的同时应用场景也十分广泛。列表这里要通过大量的练习来巩固编程思想,后期很多算法都是基于列表的数据结构。

语录

学习的过程是可能需要付出很多心血, 但坚持是成为一个优秀数据分析师必然要经历的过程。
数据分析的学习之路, 并不是学的越多越好, 而是要将学习的方向明确好, 再使正确的力, 这样才可以在正确的方向 做正确的事。
码字不易, 求个赞哈!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:10:51  更:2021-07-27 16:11:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 4:16:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码