序列之列表详解

列表是python中常用的重要数据结构,它与字符串,元组都属于序列,支持序列相关操作;
本文主要内容如下:
1>列表定义方式与基本用法;
2>列表遍历;
2>字符串,元组与列表区别;
3>列表常用函数介绍。

1.列表定义方式:

列表在Python中表示方法:[val1, val2, val3],我们可以认为列表是一个大容器,里面可以放任意对象;
1)直接定义列表:

#数字列表,价格列表
price = [90, 89, 70,100]
#字符串列表,球队列表
teams = [‘恒大‘, ‘富力‘,‘申花‘, ‘国安‘]
#二维列表:学生成绩列表:语文数学
scores = [[90, 80],[70,60],[30,40]]

2)使用list函数生成列表:
list():创建空列表;
list(itemable):将可迭代对象生成列表;
使用方式如下:

#字符串转列表:
print(list(‘helloworld‘))
#range对象转列表:
print(list(range(10)))
#enumerate对象
print(list(enumerate(‘hello‘)))

3)修改列表元素值:
列表是一种可变数据结构,我们可以直接对其元素进行修改,例如:

#某用户关注手机类型如下
phones = [‘huawei‘, ‘vivo‘, ‘oppo‘, ‘xiaomi‘]
print(phones)
#用户想把第一个修改荣耀,操作如下:
phones[0] = ‘荣耀‘
print(phones)

输出结果如下:

[‘huawei‘, ‘vivo‘, ‘oppo‘, ‘xiaomi‘]
[‘荣耀‘, ‘vivo‘, ‘oppo‘, ‘xiaomi‘]

2.遍历列表:

列表是一个可迭代对象,我们可以直接使用for循环对其遍历;
1)遍历一维列表:

phones = [‘huawei‘, ‘vivo‘, ‘oppo‘, ‘xiaomi‘]
#for循环遍历
for phone in phones:
    print(phone)

2)遍历二维列表:
如果是二维列表,我们希望遍历到每个元素,举个例子:

#NBA运动员,列表组成:球员列表,球员
#我们希望遍历每个球员名称
players = [[‘哈登‘, ‘库里‘,‘保罗‘],[‘詹姆斯‘,‘杜兰特‘],‘霍华德‘]

我们可以遍历players列表,但是如何遍历每个子列表?
我们需要知道这个元素是不是列表,如何确认players中每个元素类型?
我们可以使用type或者isinstance函数,这两个函数说明如下:

函数 说明
type(object) 返回对象类型
isinstance(obj, class_or_tuple, /) obj对象是否是指定类型或者指定其中一个

看下具体操作:

s = ‘math‘
#判断类型
print(‘"{}"is str={}‘.format(s, isinstance(s, str)))
#查看类型
print(‘type("{}")={}‘.format(s, type(s)))
a = 10
print(‘type({})={}‘.format(a, type(a)))
#查看列表每个元素类型
items = [‘a‘,[1,2]]
print(‘items=‘,items)
for index, item in enumerate(items):
    print(‘type(items[{}])={}‘.format(index, type(item)))

输出结果如下:

"math"is str=True
type("math")=<class ‘str‘>
type(10)=<class ‘int‘>
items= [‘a‘, [1, 2]]
type(items[0])=<class ‘str‘>
type(items[1])=<class ‘list‘>

这时我们想到什么?判断列中重元素是不是列表,如果是的话,继续遍历,否则打印出来,伪代码如下:

players = [[‘哈登‘, ‘库里‘,‘保罗‘],[‘詹姆斯‘,‘杜兰特‘],‘霍华德‘]
for item in players:
    if isinstance(item, list):
        遍历子列表
    else:
        print(item)

这个是我们的思路,剩下的就是代码实现,如下:

players = [[‘哈登‘, ‘库里‘,‘保罗‘],[‘詹姆斯‘,‘杜兰特‘],‘霍华德‘]
for item in players:
    if isinstance(item, list):
        for val in item:
            print(val)
    else:
        print(item)

再来思考下:如何遍历多维列表?根据上面实现,伪代码如下:

players = [[‘哈登‘, ‘库里‘,‘保罗‘],[‘詹姆斯‘,‘杜兰特‘],‘霍华德‘]
for item in players:
    if isinstance(item, list):
        for val in item:
            if isinstance(val, list):
                for x in val:
                    if....
                    ...
                    ....
                    #对比起,我实在写不下去了
            else:
                print(val)
    else:
        print(item)

这里可以考虑使用递归了,这个是我们后面学习内容,暂时就到二维列表了。

3.字符串,元组与列表区别:

字符串与元组是不可变的数据结构,列表是可变的数据结构,什么是可变与不可变?我们可以对列表的某个元素值进行修改,我们来尝试修改字符串某值:

#对比列表与字符串
list1 = [1,2,3]
list1[0] = 10
print(list1)
#修改字符串值:
s = ‘test‘
s[0] = ‘T‘
print(s)

输出结果:

[10, 2, 3]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-103-67d2a1e0bacd> in <module>()
      5 #修改字符串值:
      6 s = ‘test‘
----> 7 s[0] = ‘T‘
      8 print(s)

TypeError: ‘str‘ object does not support item assignment

运行出错,因为字符串不能被修改。这时候我们应该有个疑问:字符串的替换,大小写转换,为什么可以?来个例子我们看下:

#王者荣耀英雄名
Heroes = [‘苏烈‘,‘花木兰‘,‘马可波罗‘,‘白起‘,‘鬼谷子‘]
print(‘{} addr={}‘.format(Heroes, id(Heroes)))
#更改第一个元素,然后对比列表地址
Heroes[0] = ‘程咬金‘
print(‘{} addr={}‘.format(Heroes, id(Heroes)))
#定义字符串,然后大小写变化,在看地址
s = ‘CookBook‘
print(‘{} addr={}‘.format(s, id(s)))
s = s.title()
print(‘{} addr={}‘.format(s, id(s)))
#结果:列表修改后地址不变,但是字符串地址变化,

字符串不是在原来基础修改,而是创建新的字符串,这个就是字符串元组与列表不同,大家在理解下。

列表常用方法 :

1)序列常规操作:

Heroes = [‘苏烈‘,‘花木兰‘,‘马可波罗‘,‘白起‘,‘鬼谷子‘]
#取值:
print(Heroes[0])
#获取长度:
print(len(Heroes))
#切片操作:
print(Heroes[1:])

2)数字列表相关操作:
对列表常用的方法如下:

方法 说明
max(iterable, *[, default=obj, key=func]) 获取最大值
min(iterable, *[, default=obj, key=func]) 获取最小值
sum(iterable, start=0, /) 对数字可迭代对象求和

这些方法使用如下:

#考试成绩得分
scores = [90, 80, 95, 85]
#获取最大值:
print(‘最高分:‘, max(scores))
#获取最小值:
print(‘最低分:‘, min(scores))
#获取总分
allscore = sum(scores)
print(‘总得分:‘, allscore)
#平均分
lens = len(scores)
print(‘平均分:‘,allscore/lens)

到这里我们对列表常用方法就介绍完了,如果有编写问题,欢迎在评论区指正;
关于列表详细说明与使用,欢迎大家关注老猫专栏:http://blog.51cto.com/cloumn/detail/34

原文地址:http://blog.51cto.com/huangyg/2319500

时间: 2024-10-11 17:00:43

序列之列表详解的相关文章

有序序列ol li 详解(ol li 标号未显示?)

ol定义和用法 <ol> 标签定义了一个有序列表. 列表排序以数字来显示.使用<li> 标签来定义列表选项. 基本语法如下: <ol> <li>菠萝</li> <li>西瓜</li> <li>火龙果</li> </ol> 运行结果: ol属性 属性 值 描述 compact compact HTML5中不支持,不赞成使用.请使用样式取代它. 规定列表呈现的效果比正常情况更小巧. reve

Python列表详解

Python列表详解: 创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可. 比如:    list = [1, 2, 3, 4, 5 ]; 与字符串的索引一样,列表索引从0开始. Python列表函数即方法: Python所包含的函数: 1.cmp() 描述: cmp()用于比较两个列表的元素. 语法: cmp (list1,list2) 返回值: 如果比较的元素是同类型的,则比较其值,返回结果. 如果两个元素不是同一种类型,则检查它们是否是数字. 如果是数字,执行必要的数字强制类型

Cocos2d-x滚动列表详解(CCScrollView的使用)

今天要写一个滚动列表功能,类似下面这样.(图片资源都是自己从天天酷跑里面抠的,仅用于学习方便) 首先,这样一个列表就和iOS里面的UITableView没什么两样,当然,Android中肯定也存在类似的控件. 在cocos2d-x引擎中参照ios中的UITableView实现了一个叫做CCTableView的类,用于创建列表,对于熟悉ios程序设计的人来说,这个内容应该是很好理解的. 下面就介绍下CCTableView. 首先,mark几个比较好的博文. Cocos2d-x CCTableVie

序列之元组详解

元组是序列一种,与列表类似,但是不能修改,下面我们详解介绍下元组: 1 列表近亲:元组 1.1 元组定义与访问方式: 元组与列表类似,元组语法:(ele1, ele2, ele3):具体如下: #定义元组1,与列表类似 a = (1,2,3) print(a) #定义元组2 b = 'a', 'b', 'c' print(b) #元素访问: print(a[0], b[1]) 1.2 tuple方法使用: tuple可以将可迭代对象转成元组,相关操作如下: #range对象转元组 print(t

基于zookeeper分布式全局序列分布式锁详解

InterProcessMutex 类详解步骤:获取锁的过程步骤: 1.acquire方法,根据当前线程获取锁对象,判断当前的线程是否已经获取锁,此处则代表可重入:2.获取锁方法,String lockPath = internals.attemptLock(time, unit, getLockNodeBytes());3.当获取到锁时,则把锁数据放入内存对象private final ConcurrentMap<Thread, LockData>   threadData = Maps.n

Illumina Sequence Identifiers 序列标识符 index详解

大家基本都知道什么是 FASTA 和 FastQ 格式了,但这是不够的. 我们还需要了解世界上最大的测序公司自己定制的 FastQ 格式,因为你可能会经常用到,有时还会亲自去处理它们. 本文主题:Illumina 测序数据中的 Index Fastq格式详解

python系列(三)python列表详解

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 本博文阅读目录: 1)len函数//查看列表的个数 2)序列[索引号] //查看索引号对应的元素 3)在list中追加元素到末尾list.append("元素") 4)把元素插入到指定的位置 list.insert(索引号,"元素") 5)删除list末尾元素list.pop()和指定索引号元素 list.p

Python学习之通用序列类型数据详解

本文和大家分享的主要是python通用序列类型数据的相关操作,一起来看看吧,希望对大家学习python有所帮助. Python的序列,Python有6种内建的序列,包括:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.其中最为常用的是Python的列表和元组. Python的序列 Python有6种内建的序列,包括:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.其中最为常用的是Python的列表和元组. Python序列的应用 Pyt

python基础知识(列表详解)

列表(list) 列表中可以存入整数.实数.布尔值.字符串.序列.对象 可变序列 列表  []  元素间隔用   ,号分隔 列表的创建和删除 使用赋值运算符直接创建列表 listname = [元素1,元素2,.......] 创建空列表 列表名 = [] 创建数值列表 string = "圣人蛋糕" list(string) print(string) ["圣","人","蛋","高"] range()