前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python_实用入门篇_08

Python_实用入门篇_08

作者头像
py3study
发布2020-01-19 15:08:39
6790
发布2020-01-19 15:08:39
举报
文章被收录于专栏:python3python3

Python序列内置类型之列表类型详解


1.Python序列概念

数学上,序列是被排成一列的对象(或事件)这样每个元素不是在其他元素之前,就是在其他元素之后。这里,元素之间的顺序非常重要。序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字,也就是它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

2.Python中属于序列的内置类型种类

Python有6个序列的内置类型(列表、元组、字符串、Unicode字符串、buffer对象、xrange对象),但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。

3.Python的列表操作

1.创建一个列表(创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可,里面的元素可以是列表,数字或者字符串等等)

代码语言:javascript
复制
list1 = [1, 2, 3, 4, 5 ]

     2.索引(使用下标索引来访问列表中的值)

代码语言:javascript
复制
list1 = [1, 2, 3, 4, 5, 6, 7 ]
print(list1[0])

     3.列表元素增删操作(有.append()方法,.pop()方法,.remove()方法,.del()方法,还有一些方法在下面表里,自己查哦)

代码语言:javascript
复制
list = []          ## 空列表
list.append("red")
list.append("Molly”)   ## 使用 append() 添加元素
print(list)
>>>[“red”,"Molly"]

list.pop()#移除列表中的一个元素(如果括号参数为空,则默认删除最后一个元素),并且返回该元素的值
print(list)
>>>["red"]

list.remove("Molly")#删除列表中的具体元素
print(list)
>>>[]

list = ["red","molly"] 
del list[1] 
print(list)
>>>["red"]

注意:如果用.remove方法删除列表中具体元素,列表中有重复的元素,默认删除第一个。

4.Python列表脚本操作符(和字符串操作类似)

Python 表达式

结果

描述

len([1, 2, 3])

3

长度

[1, 2, 3] + [4, 5, 6]

[1, 2, 3, 4, 5, 6]

组合

['Hi!'] * 4

['Hi!', 'Hi!', 'Hi!', 'Hi!']

重复

3 in [1, 2, 3]

True

元素是否存在于列表中

for x in [1, 2, 3]: print x,

1 2 3

迭代

5.Python列表截取(切片操作)

         分片使用2个冒号分隔的3个数字来完成:[start:end:step],start:end表示从哪里切到哪里,比如创建一个列表[1,5,7,8,10],切片操作[1:3],就表示从列表的第1位截取到第三位,切片后列表为[5,7,8]。step表示要切的步长,如果step为2,切出来的列表就是[5,8]。

代码语言:javascript
复制
L = ['cdx', 'Red', 'molly']
print(L[2])
>>>'molly'
print(L[-2])
>>>"Red"
print(L[1:])
>>>['Red', 'molly']

 注意:列表里 a 与 a[:] 不同。可以通过函数 id() 查看。简单来说,a[:] 是创建 a 的一个副本

4.Python列表函数&方法

Python包含以下函数:

序号

函数

1

cmp(list1, list2)比较两个列表的元素

2

len(list)列表元素个数

3

max(list)返回列表元素最大值

4

min(list)返回列表元素最小值

5

list(seq)将元组转换为列表

Python包含以下方法:

序号

方法

1

list.append(obj)在列表末尾添加新的对象

2

list.count(obj)统计某个元素在列表中出现的次数

3

list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

4

list.index(obj)从列表中找出某个值第一个匹配项的索引位置

5

list.insert(index, obj)将对象插入列表

6

list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

7

list.remove(obj)移除列表中某个值的第一个匹配项

8

list.reverse()反向列表中元素

9

list.sort(cmp=None, key=None, reverse=False)对原列表进行排序

4.Python列表补充的一些高级用法及操作

1.Python创建二维列表(一个大列表里嵌套许多一维列表为二维列表),在这里给大家普及高级用法,列表推导式。

列表推导式:快速生成一个列表的方法,从右向左看,循环语句执行完后,返回i到列表,看不懂没关系,后面博主讲完高级Python你就懂了。

代码语言:javascript
复制
#列表推导式用法
#if写在前面
c = [i if i%2==0 else 1 for i in a]  //遍历a的每个元素,如果i为偶数直接返回,否则直接返回1。此处if写在for前面要求必须有else项
a = [1,2,3]
c = [i if i%2==0 else 1 for i in a]
print(c)
>>>[1, 2, 1]
代码语言:javascript
复制
#if语句写在末尾
a = [1,2,3]
c = [i for i in a if i%2==0]#if条件在末尾,只筛选出符合条件的数字
print(c)
>>>[2]

二维列表创建:

代码语言:javascript
复制
#方法1是直接定义二维列表
list1 = [[0, 0, 0, 0, 0, 3, 5], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 7], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
#方法2是使用列表推导式
list2= [ [0 for i in range(5)] for i in range(5)]
print(list)
>>>[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

2.将列表中的所有元素组合成字符串

"".join()操作,此操作可以将列表中的元素取出并组合成字符串。括号里的参数是列表名。""引号中传入的是以何种字符连接。

代码语言:javascript
复制
a = ["cdx","is","Redmolly"]
print(" ".join(a))
>>>cdx is Redmolly
print("-".join(a))
>>>cdx-is-Redmolly

3.查找列表中频率最高的值

需要用到Python标准库——collections模块的Counter类,Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。这里不懂真没关系,等你看完字典和模块和类就懂了。

Counter的创建:

代码语言:javascript
复制
c = Counter()  # 创建一个空的Counter类
c = Counter('gallahad')  # 从一个可iterable对象(list、tuple、dict、字符串等)创建
c = Counter({'a': 4, 'b': 2})  # 从一个字典对象创建
c = Counter(a=4, b=2)  # 从一组键值对创建

计数值访问:

代码语言:javascript
复制
c = Counter("abcdefgab")
print(c["a"])
>>>2
print(c["c"])
>>>1

Counter类中的most_common([n])方法:返回一个TopN列表。如果n没有被指定,则返回所有元素。当多个元素计数值相同时,排列是无确定顺序的。(看例子就懂)

代码语言:javascript
复制
c = Counter('abracadabra')
print(c.most_common())
>>>[('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)]
print(c.most_common(3))#返回前三个键值对
>>>[('a', 5), ('r', 2), ('b', 2)]

查找列表中频率最高的值:

代码语言:javascript
复制
利用collections.Counter类
words = ['look', 'into', 'my', 'eyes', 'look', 'into',
'my', 'eyes', 'the', 'eye', 'the', 'eyes', 'not',
'around', 'the', 'eyes', "don't", 'look', 'around',
'the', 'eyes', 'look', 'into', 'my', 'eyes', "you're",
 'under']
from collections import Counter
word_counts = Counter(words)
print(word_counts.most_common(3))
>>>[('eyes', 6), ('look', 4), ('the', 4)]

4.复制列表

copy函数:复制一个列表,用法如下:

代码语言:javascript
复制
name = ["red","molly"]
name_copy = names.copy()
print(name,name_copy)
>>>["red","molly"]["red","molly"]

5.移除列表重复项(只讲最简单的Python原生方法,其他的需要你自己动脑筋)

方法1,利用python中集合元素唯一性特点,将列表转为集合,将转为列表返回:

这里简单介绍下集合,明天再详细讲Python集合:集合(set)是一个无序不重复元素的序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建集合:

代码语言:javascript
复制
#法1创建
parame = {value01,value02,...}
#法2创建
set(value)

移除列表重复项:

代码语言:javascript
复制
def deleteDuplicated(listA):
    return sorted(set(listA),key = listA.index)
listA = deleteDuplicated([3,5,3,4,7])
print(listA)

6.查询N维列表的所有项(这个的难度在于,你要搞懂内嵌列表的索引)

代码语言:javascript
复制
moves = ["冰雪奇缘","变形金刚",["公主","擎天柱",["王子","威震天"]]]
def print_lol(the_list):
    for each_item in the_list:
        if isinstance(each_item,list):
            print_lol(each_item)
        else:
            print(each_item)
print_lol(moves)

PS(高级内容看不懂没关系,之后退回来看就好了,关于序列类型的相互转换,等介绍完所有的序列类型后再来总结!一定要自己自己敲代码啊)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.Python列表函数&方法
  • 4.Python列表补充的一些高级用法及操作
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档