资讯专栏INFORMATION COLUMN

python-数据类型之列表

Fourierr / 1006人阅读

摘要:是处理一组有序项目的数据结构,是中使用最频繁的数据结构实现,可以完成大多数数据集合类的数据结构实现。支持字符数字字符串甚至还可以嵌套列表元组字典等。一列表的创建是表示,内部元素间用逗号隔开。

List是处理一组有序项目的数据结构,是python中使用最频繁的数据结构实现,可以完成大多数数据集合类的数据结构实现。支持字符、数字、字符串甚至还可以嵌套列表、元组、字典等。

(一)列表的创建
(1)List是[]表示,内部元素间用逗号隔开。
(2)List中可以放元组、字典、列表、字符串、类、内建函数等。
(3)创建一个列表就像给一个变量赋值一样的简单.你手工写一个列表(空的或者有值的都行)然后赋给一个变量,列表是由方括号([])来定义的,当然,你也可以用工厂方法来创建它.
代码:

>>> alist=[123,"abc",4.56,["inner","list"],7-9j]
>>> anotherList=[None,"something to see here"]
>>> print alist
[123, "abc", 4.56, ["inner", "list"], (7-9j)]
>>> print anotherList
[None, "something to see here"]
>>> aListThatStartedEmpty=[]
>>> print aListThatStartedEmpty
[]
>>> list("fool")       #工厂方法
["f", "o", "o", "l"]

(二)列表的基本操作
列表的基本操作:增删改查
(1)读取(访问列表的值):列表的切片操作就像字符串中一样;切片操作符([])和索引值或索引值范围一起使用

>>> lista=[1,2,3,4]
>>> print lista[0]
>>> print lista[-1]
>>> print lista[1]
>>> print lista[-2]

(2)修改(更新列表):可以通过在等号的左边指定一个索引或者索引范围的方式来更新一个或几个元素,你也可以用 append()方法来追加元素到列表中。

>>> lista[0]+=10
>>> lista[0:3]=[3,4,5,6]
>>> lista
[3, 4, 5, 6, 4]

(3)遍历:

 >>> for i in lista:
 ...     print i

(4)删除:要删除列表中的元素,如果你确切的知道要删除元素的素引可以用 del 语句,否则可以用remove()方法.通过 pop()方法来删除并从列表中返回一个特定对象.

>>> lista=[1,2,3,4]
>>> del lista[-1]
>>> del lista[0]
>>> lista
[2, 3]
>>> print lista
>>> lista.remove(3)
>>> lista
[2]
>>> listb=["a","b","c","d"]
>>> listb.pop()               #pop删除最后一个
"d"
>>> listb
["a", "b", "c"]

(5)增加:append、insert、extend

>>> lista
>>> lista.append("abc")
>>> lista.append([1,2,3])
>>> lista.extend([4,5,6])
>>> lista.insert(1,1000)
>>> lista

注:extend()方法的参数支持任何可迭代对象如下的文件:

>>>motd=[]
>>> motd.append("msg of the day")
>>> f=open(r"C:UsersAADesktop	est1.txt","r")
>>> motd.extend(f)
>>> motd
["msg of the day", "hello world
"]
>>> f.close()

(6)合并列表:

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a+b

(7)列表的切片操作:

print str[0:3]    #截取第一位到第三位的字符 
print str[:]      #截取字符串的全部字符 
print str[6:]     #截取第七个字符到结尾 
print str[:-3]    #截取从头开始到倒数第三个字符之前
print str[2]     #截取第三个字符
print str[-1]    #截取倒数第一个字符
print str[::-1]   #创造一个与原字符串顺序相反的字符串
print str[-3:-1]  #截取倒数第三位与倒数第一位之前的字符 
print str[-3:]    #截取倒数第三位到结尾 
print str[:-5:-3]  #逆序截取

详解:列表的下标有三个参数:beg(起始下标),end(终止下标),delta(变化量)
当delta小于0时,beg默认为len(array)-1,end默认为开头之前。
当delta大于0时,beg默认为0,end默认为最末之后。
当delta未给出时:delta默认为1

注:列表切片产生的是列表的副本,与原列表不是同一份空间。切片生成的子序列元素是源版的拷贝。因此切片是一种浅拷贝。

>>> x=[1,2,3]
>>> y=x[:]
>>> x[0]=-1
>>> y
[1, 2, 3]

切片的写操作:

>>> x=[1,2,3,4,5]
>>> x[2:0]=[990]
>>> x
[1, 2, 990, 3, 4, 5]
>>> del x[2:3]
>>> x
[1, 2, 3, 4, 5]
>>> del x[3:2]     #如果from>> x
[1, 2, 3, 4, 5]

(三)列表的运算符:len(list)、+、*、in 、遍历

>>>a=[1,2,3]
>>>len(a)
3
>>>[1,2,3]+[4,5,6]
[1, 2, 3, 3, 4, 5]
>>>["a"]*3
["a", "a", "a"]
>>>3 in a
True
>>>
>>> for i in [1,2,3]:print i
...
1
2
3

(四)列表的函数与方法
(1)列表统计

>>>[2,4,5,4,4,4,4].count(4)
5

(2)列表index(value,start,end) start end为闭开区间

a=[2,3,4,"b"]
a.index("b")
a.index("b",2)
a.index("b",4)
a.index("b",1,5)

解释:a.index(‘b’,1,5)
从a中查找元素b的位置,从索引1位置开始包括1,到索引位置5但不包括位置5
注:index()来检查一个元素是否存在于一个list中并不是个好主意,因为不存在就会出错。应该先用 in 成员关系操作符(或者是 not in)检查一下,然后在用 index()找到这个元素的位置。
代码(可以避免index报错):

>>> for i in ["compact disc", 45, "8-track tape"]:
...     if i in music_media:
...         print music_media.index(i)
0
1
2

(3)列表pop删除-pop(index),index不写默认为最后一个元素的索引,可以写索引

>>> a=range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print a.pop()
9
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> print a.pop(0)
0
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]

(4)Cmp:列表比较,相等返回0,大于返回1,小于返回-1

>>> a=[1,2]
>>> b=[1,2,3]
>>> cmp(a,b)
-1
>>> a=[]
>>> b=[]
>>> cmp(a,b)
0 

(5)列表reverse()-列表反向输出并不会排序

>>> a=[3,4,5,6,7,8,9]
>>> a.reverse()
>>> a
[9, 8, 7, 6, 5, 4, 3]

(6)列表sort()-列表排序

>>> a=[3,4,5,6,7,8,9]
>>> a.sort()
>>> a
[3, 4, 5, 6, 7, 8, 9]

Sorted:

>>> a=[1,-1,-2,4,-3,3]
>>> b=sorted(a)
>>> print b
[-3, -2, -1, 1, 3, 4]
>>> print a
[1, -1, -2, 4, -3, 3] 

注:那些可以改变对象值的可变对象的方法是没有返回值的!
在使用可变对象的方法如 sort(),extend()和 reverse()的时候要注意,这些操作会在列表中原地执行操作,也就是说现有的列表内容会被改变,但是没有返回值!是的,与之相反,字符串方法确实有返回值:

4、综合列表的推导(列表推导)
[expr for iter_var in iterable]
这个语句的核心是 for 循环, 它迭代 iterable 对象的所有条目. 前边的 expr 应用于序列的每个成员, 最后的结果值是该表达式产生的列表. 迭代变量并不需要是表达式的一部分.
[expr for iter_var in iterable if cond_expr]
(1)先执行for后if,然后执行的结果放到list中
(2)如果是两个for,则先执行左边的for,在执行右边的for,执行的结果放到List中

>>> [x for x in range(1,10,2)]
[1, 3, 5, 7, 9]

>>> [x**2 for x in range(1,10,2)]
[1, 9, 25, 49, 81] 

>>> [i for i in range(20) if i%2==0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 

d = {"x": "A", "y": "B", "z": "C" }
print [k + "=" + v for k, v in d.iteritems()] 

例子1:矩阵转置:

a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
print [ [j[i] for j in a] for i in range(3)] 

以下为例子进行分析:
a=[[1,2],[4,5]]
print [ [j[i] for j in a] for i in range(2)]
分析:
for i in range(2)--->i:0 --->第一次循环
   for j in a:---第一次:[1,2]
        1,2--->[1]    
      for j in a:---第2次:[4,5]
        4,5--->[1,4]  

for i in range(2)--->i:1 --->第二次循环
   for j in a:---第一次:[1,2]
        1,2--->[2]    
      for j in a:---第2次:[4,5]
        4,5--->[2,5]
[[1,4] ,[2,5]] 

例子2:删除列表的3,6,9,12

a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
print [ [i[j] for j in [1,2]]for i in a] 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40898.html

相关文章

  • Python全栈路系列列表数据类型

    摘要:列表同字符串一样都是有序的,因为他们都可以通过切片和索引进行数据访问,且列表的的是可变的。 列表(list)同字符串一样都是有序的,因为他们都可以通过切片和索引进行数据访问,且列表的的是可变的。 创建列表的几种方法 第一种 name_list = [Python, PHP, JAVA] 第二种 name_list = list([Python, PHP, JAVA]) 创建一个空列表 ...

    琛h。 评论0 收藏0
  • Python基础(三)字典

    摘要:这种数据结构包含以下几种常见的操作向关联数组添加键值对从关联数组内删除键值对修改关联数组内的键值对根据已知的键寻找值字典问题是设计一种能够具备关联数组特性的数据结构。 定义 Python中有一个叫作dictionary的对象类型,翻译过来就是字典,用dict表示。 创建字典 创建空的字典 >>> mydict = {} >>> mydict {} >>> type(mydict) >...

    snifes 评论0 收藏0
  • 一文带你斩杀PythonNumpy☀️Pandas全部操作【全网最详细】❗❗❗

    目录Numpy简介Numpy操作集合1、不同维度数据的表示1.1 一维数据的表示1.2 二维数据的表示1.3 三维数据的表示2、 为什么要使用Numpy2.1、Numpy的ndarray具有广播功能2.2 Numpy数组的性能比Python原生数据类型高3 ndarray的属性和基本操作3.1 ndarray的基本属性3.2 ndarray元素类型3.3 创建ndarray的方式3.4 ndarr...

    asoren 评论0 收藏0
  • Python基础控制结构

    摘要:基础之控制结构学习目标代码块与缩进条件语句语句语句的嵌套断言循环循环循环中断循环控制语句综合嵌套列表解析式基础相关链接学习目标是简洁易学面向对象的编程语言。 Py...

    liaosilzu2007 评论0 收藏0
  • Python全栈路系列元组数据类型

    摘要:元组和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样创建元组的两种方法第一种第二种如果元祖内只有一个元素,那么需要加上一个逗号,否则就变成字符串了。 元组(tuple)和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样 创建元组的两种方法 第一种 ages = (11, 22, 33, 44, 55) 第二种 ages = tuple((11,...

    李涛 评论0 收藏0
  • 真假美猴王-Numpy数据Python数组的区别与联系

    摘要:下文统一称为数组是存储单一数据类型的多维数组同语言数组直接保存数值而则是能够对数组进行处理的函数。动态数据类型与的数组和的这些不可变数据类型的适用场景等可变数据类型适用于需要不断对原始数据进行修改的场景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一个矩阵计算包,功能类似ma...

    邹强 评论0 收藏0

发表评论

0条评论

Fourierr

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<