Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python数据类型详解-列表#学习猿地

Python数据类型详解-列表#学习猿地

作者头像
学习猿地
发布于 2020-03-18 12:56:35
发布于 2020-03-18 12:56:35
5720
举报
文章被收录于专栏:学习猿地学习猿地

## 数据类型详解-列表

> 列表就是一组有序的数据组合,列表中的数据可以被修改

## 列表的定义

+ 可以使用 中括号进行定义 []

+ 也可以使用 list函数 定义

+ 在定义列表中的元素时,需要在每个元素之间使用逗号,进行分隔。[1,2,3,4]

+ 列表中的元素可以是任意类型的,通常用于存放同类项目的集合

## 列表的基本操作

+ 列表定义-[],list()

+ 列表相加-拼接

+ 列表相乘-重复

+ 列表的下标- 获取,更新

+ 列表元素的添加-append()

+ 列表元素的删除

+ del 列表[下标]

+ pop()函数 删除元素

## 列表中切片

> 语法==> 列表[开始索引:结束索引:步进值]

1。 列表[开始索引:] ==> 从开始索引到列表的最后

2。 列表[:结束值] ==> 从开始到指定的结束索引之前

3。 列表[开始索引:结束索引] ==> 从开始索引到指定结束索引之前

4。 列表[开始索引:结束索引:步进值] ==> 从指定索引开始到指定索引前结束,按照指定步进进行取值切片

5。 列表[:] 或 列表[::] ==> 所有列表元素的切片

6。 列表[::-1] ==> 倒着获取列表的元素

示例:

```python

varlist = ['刘德华','张学友','张国荣','黎明','郭富城','小沈阳','刘能','宋小宝','赵四']

# 从开始索引到列表的最后

res = varlist[2:] # ['张国荣','黎明','郭富城','小沈阳','刘能','宋小宝','赵四']

# 从开始到指定的结束索引之前

res = varlist[:2] # ['刘德华','张学友']

# 从开始索引到指定结束索引之前

res = varlist[2:6] # ['张国荣', '黎明', '郭富城', '小沈阳']

# 从指定索引开始到指定索引前结束,按照指定步进进行取值切片

res = varlist[2:6:2] # ['张国荣', '郭富城']

# 所有列表元素的切片

res = varlist[:]

res = varlist[::]

# 倒着输出列表的元素

res = varlist[::-1]

# 使用切片方法 对列表数据进行更新和删除

print(varlist)

# 从指定下标开始,到指定下标前结束,并替换为对应的数据(容器类型数据,会拆分成每个元素进行赋值)

# varlist[2:6] = ['a','b','c',1,2,3]

# varlist[2:6:2] = ['a','b'] # 需要与要更新的元素个数对应

# 切片删除

# del varlist[2:6]

del varlist[2:6:2]

```

## 列表相关函数

```python

varlist = ['刘德华','张学友','张国荣','张学友','黎明','郭富城','小沈阳','刘能','宋小宝','赵四']

# len() 检测当前列表的长度,列表中元素的个数

res = len(varlist)

# count() 检测当前列表中指定元素出现的次数

res = varlist.count('张学友')

# append() 向列表的尾部追加新的元素,返回值为 None

varlist.append('川哥')

# insert() 可以向列表中指定的索引位置添加新的元素,

varlist.insert(20,'aa')

# pop() 可以对指定索引位置上的元素做 出栈 操作,返回出栈的元素

res = varlist.pop() # 默认会把列表中的最后一个元素 出栈

res = varlist.pop(2) # 会在列表中把指定索引的元素进行 出栈

varlist = [1,2,3,4,11,22,33,44,1,2,3,4]

# remove() 可以指定列表中的元素 进行 删除,只删除第一个。如果没有找到,则报错

res = varlist.remove(1)

# index() 可以查找指定元素在列表中第一次出现的索引位置

# res = varlist.index(1)

# res = varlist.index(1,5,20) # 可以在指定索引范围内查找元素的索引位置

# extend() 接收一个容器类型的数据,把容器中的元素追加到原列表中

# varlist.extend('123')

# s.clear() # 清空列表内容

# varlist.clear()

# reverse() 列表翻转

varlist.reverse()

# sort() 对列表进行排序

res = varlist.sort() # 默认对元素进行从小到大的排序

res = varlist.sort(reverse=True) # 对元素进行从大到小的排序

res = varlist.sort(key=abs) # 可以传递一个函数,按照函数的处理结果进行排序

```

## 深拷贝与浅拷贝

### 浅拷贝

> 浅拷贝只能拷贝列表中的一维元素,**如果列表中存在二维元素或容器,则引用而不是拷贝**

>

> 使用cpoy函数或者copy模块中的copy函数拷贝的都是浅拷贝

```python

# 浅拷贝 只能拷贝当前列表,不能拷贝列表中的多维列表元素

varlist = [1,2,3]

# 简单的拷贝 就可以把列表复制一份

newlist = varlist.copy()

# 对新拷贝的列表进行操作,也是独立的

del newlist[1]

# print(varlist,id(varlist))

# print(newlist,id(newlist))

'''

[1, 2, 3] 4332224992

[1, 3] 4332227552

'''

# 多维列表

varlist = [1,2,3,['a','b','c']]

# 使用copy函数 拷贝一个多维列表

newlist = varlist.copy()

'''

print(newlist,id(newlist))

print(varlist,id(varlist))

[1, 2, 3, ['a', 'b', 'c']] 4361085408

[1, 2, 3, ['a', 'b', 'c']] 4361898496

'''

# 如果是一个被拷贝的列表,对它的多维列表元素进行操作时,会导致原列表中的多维列表也发生了变化

del newlist[3][1]

'''

通过id检测,发现列表中的多维列表是同一个元素(对象)

print(newlist[3],id(newlist[3]))

print(varlist[3],id(varlist[3]))

['a', 'c'] 4325397360

['a', 'c'] 4325397360

'''

```

### 深拷贝

> 深拷贝就是不光拷贝了当前的列表,**同时把列表中的多维元素或容器也拷贝了一份,而不是引用**

>

> 使用copy模块中的 deepcopy 函数可以完成深拷贝

```python

# 深拷贝 就是不光拷贝了当前的列表,同时把列表中的多维元素也拷贝了一份

import copy

varlist = [1,2,3,['a','b','c']]

# 使用 copy模块中 深拷贝方法 deepcopy

newlist = copy.deepcopy(varlist)

del newlist[3][1]

print(varlist)

print(newlist)

'''

print(newlist[3],id(newlist[3]))

print(varlist[3],id(varlist[3]))

['a', 'c'] 4483351248

['a', 'b', 'c'] 4483003568

'''

```

## 列表推到式

>List-Comprehensions

>

>列表推导式提供了一个更简单的创建列表的方法。

>

>常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列。

>

>采用一种表达式的当时,对数据进行过滤或处理,并且把结果组成一个新的列表

### 一,基本的列表推到式使用方式

> 结果变量 = [变量或变量的处理结果 for 变量 in 容器类型数据]

示例:

```python

# 1 假设我们想创建一个平方列表

# 使用普通方法完成

varlist = []

for i in range(10):

varlist.append(i**2)

# print(varlist) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 使用 map函数和list完成

varlist = list(map(lambda x: x**2, range(10)))

# print(varlist) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 使用列表推到式完成 下面这个列表推到式和第一种方式是一样的

varlist = [i**2 for i in range(10)]

# print(varlist) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 2。 '1234' ==> [2,4,6,8]

# 常规方法完成需求

varstr = '1234'

newlist = []

for i in varstr:

newlist.append(int(i)*2)

# print(newlist) # [2, 4, 6, 8]

# 使用列表推到式完成上面的需求

newlist = [int(i)*2 for i in varstr]

# print(newlist) # [2, 4, 6, 8]

# 使用列表推到式+位运算完成

newlist = [int(i) << 1 for i in varstr]

# print(newlist) # [2, 4, 6, 8]

```

### 二,带有判断条件的列表推到式

> 结果变量 = [变量或变量的处理结果 for i in 容器类型数据 条件表达式]

示例:

```python

# 0-9 求所有的偶数,==> [0, 2, 4, 6, 8]

# 常规方法完成

newlist = []

for i in range(10):

if i % 2 == 0:

newlist.append(i)

# print(newlist) # [0, 2, 4, 6, 8]

# 列表推到式完成

newlist = [i for i in range(10) if i % 2 == 0]

# print(newlist) # [0, 2, 4, 6, 8]

```

### 三,对于嵌套循环的列表推到式

```python

'''

# 下面这个 3x4的矩阵,它由3个长度为4的列表组成,交换其行和列

[

[1, 2, 3, 4],

[5, 6, 7, 8],

[9, 10, 11, 12],

]

==>

[

[1, 5, 9],

[2, 6, 10],

[3, 7, 11],

[4, 8, 12]

]

'''

arr = [

[1, 2, 3, 4],

[5, 6, 7, 8],

[9, 10, 11, 12],

]

# 常规方法完成

# newlist = []

# for i in range(4):

# res = []

# for row in arr:

# res.append(row[i])

# newlist.append(res)

# print(newlist)

# 使用列表推到式完成

newlist = [[row[i] for row in arr] for i in range(4)]

print(newlist)

```

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python数据类型详解-集合#学习猿地
+ 功能:成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。
学习猿地
2020/03/17
4210
Python基础(三) | Python的组合数据类型
d.get(key,default) 从字典d中获取键key对应的值,如果没有这个键,则返回default
timerring
2022/09/27
2.8K0
Python基础(三) | Python的组合数据类型
Python数据类型详解-元组#学习猿地
res = vart[5:1:-1] # 从索引5开始 到索引 1,步进值为-1 倒着输出
学习猿地
2020/03/17
3640
Python数据类型详解-元组#学习猿地
超详解——Python 列表详解——小白篇
Python中的列表(List)是最常用的数据结构之一,允许存储任意类型的元素,并且支持各种灵活的操作。列表是可变的,这意味着列表中的元素可以在创建后被修改。
小李很执着
2024/06/15
1.2K0
Python模块化编程-内置函数#学习猿地
> 内置函数就是在系统安装完python解释器时,由python解释器给提供好的函数
学习猿地
2020/03/17
4750
Python模块化编程-内置函数#学习猿地
python学习之列表
序列是python的最基本数据结构,序列的每个元素都分配一个数字,它的索引,第一个是0,第二个是1,依次类推; python的6个内建的序列分别是列表,元祖,字符串,unicode字符串,buffer对象和xrange对象; 序列通用操作包含:索引,长度,组合(序列相加),重复(乘法),分片,检查成员,遍历,最大值和最小值;
py3study
2020/01/14
3110
Python列表与元组
变量只能存一个数据,而集合能存储一组数据。本节我们来介绍两种Python中最常见的数据结构:列表与元组
小雨coding
2020/06/30
2.3K0
06. Python序列与列表:从入门到精通
序列是 Python 中最基本的数据结构之一,它是一组有序的数据的集合。序列具有以下特点:
全栈若城
2025/02/27
520
Python学习笔记03-基础篇—列表List
列表是由一系列按照特定顺序排列的元素组成,可以通过方括号([])来表示列表,并用逗号分隔里面的元素。
可以叫我才哥
2021/08/05
2600
从“CRUD”,看Python的常见数据类型
之前所写这篇文章是因为最近在帮助团队招聘、面试的过程中,看到很多人的简历上都提及自己擅长功能测试,擅长Python以及各类的自动化测试框架、测试工具,而当我提问用过哪些方法进行测试用例设计时,大多数同学的回答都是等价类划分、边界值,其他的甚至都没听说过;当我问到Python有哪些常见的数据类型以及它们有哪些常用方法、哪些是可变类型等这些基础的问题时,很多人都答不上来。
大刚测试开发实战
2023/08/29
4640
从“CRUD”,看Python的常见数据类型
python整型-浮点型-字符串-列表及内置函数(上)
转换字符串的大小写(只影响字母) lower  upper  capitalize  swapcase  title
suwanbin
2019/09/26
1.8K0
python整型-浮点型-字符串-列表及内置函数(上)
超强汇总:学习Python列表,只需这篇文章就够了
千里之行,始于足下。要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好。今天,本喵带大家仔细温习一下Python的列表。温故而知新,不亦说乎。
Python猫
2019/04/10
4560
基本数据类型(二)
  列表是 Python 最常用的数据类型,它是有序元素的集合,元素之间以逗号分隔,用中括号括起来,可以是任何数据类型。同时它也是一种序列,支持索引、切片、加、乘和成员检查等。
py3study
2020/01/16
6780
Python数据类型详解-字符串#学习猿地
# vars = '岁月是把杀猪刀,\n\n但是它拿长得丑的人一点办法都没有。。。'
学习猿地
2020/03/17
4530
Python数据类型详解-字符串#学习猿地
python 学习第二周总复习
如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变
py3study
2020/01/15
4170
干货!Python常用数据类型的基本操作(长文系列第一篇)
Python基础系列会将基础内容大致分为四到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下;如果你想入门Python,希望可以帮你越过这个门槛。
奶糖猫
2020/07/31
7610
干货!Python常用数据类型的基本操作(长文系列第一篇)
Python列表最常见的问题【总结】
列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,本文总结了一些python列表最常见的问题,希望能对大家有帮助。
一墨编程学习
2018/12/14
7520
面试复习-Python-数据类型
Python 是一种高级编程语言,具有丰富的数据类型。了解这些数据类型对于有效地编写 Python 代码至关重要。以下是对 Python 主要数据类型的详细介绍。
宅蓝三木
2024/10/09
1020
Python 列表操作指南2
您还可以通过引用它们的索引编号来遍历列表项。使用 range() 和 len() 函数创建一个合适的可迭代对象。
小万哥
2023/10/03
1810
Python 列表操作指南2
【python】零基础入门(1/3):字符串 || 运算 || 列表 || 字典
字符串替换常用 replace() 函数。它用于临时打印、创建新对象,对原字符串无影响
魏言
2025/02/17
1980
相关推荐
Python数据类型详解-集合#学习猿地
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档