Python列表的语法和使用

来源:互联网 发布:淘宝网买家中心 编辑:程序博客网 时间:2024/06/14 12:54

列表

语法

语法书写

变量名称 = ["字符串1","字符串2"...,...,"字符串N-1"] #该字符串可为数字或变量,数字无需加双引号,变量需先定义,否则会出错列子:longyucendeMacBook-Pro:~ longyucen$ python3Python 3.5.2 (default, Oct 11 2016, 04:59:56) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> age = 22>>> name = ['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4,age]>>> name['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22]

选择列表中的数值

若选择列表中的两个数值>>> name[0:1] ['minglong']#数值下标从0开始,按照python语法规则,他只包含头部内容不包含尾部内容,因此要取两个数据按下面的语法取值>>> name[0:2]['minglong', 'minghu']#取后面列表最后一位>>> name[-1]22#取后面5位数字>>> name[-5:] #python只能从左边向右边取数且按照包头不包尾的原则,该语法[-5:-1]是无法将最后一位取出,因此取出最后一位则要省略最后一位的下标[89, 9, 9, 4, 22]

列表的插入、追加、替换、删除、合并、反转、清空、排序、复制数据

#追加数据,向列表第二位后面追加一个数值>>> name.insert(2,"abc")>>> name['minglong', 'minghu', 'abc', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22]#若从后面追加数值的话,应该是在该值后面一值的前面>>> name['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'abc']>>> name.insert(-1,"bb")#要在"22"和"abc"之间插入一个数值,从后面计算的话是往"abc"的前面插入>>> name['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'bb', 'abc']#删除数据,将上面添加的数值进行删除>>> name.remove("abc")>>> name['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22]#在列表最后面添加数据>>> name.append("abc")>>> name['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'abc']#替换列表中数值的值>>> name['minglong', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'bb', 'abc']>>> name[0]="longyucen">>> name['longyucen', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'bb', 'abc']#合并数据(扩展数据)>>> name['longyucen', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'bb', 'abc']>>> txt['aa', 'b', 122, 33, 444, 'long', 'texi']>>> name.extend(txt) #将txt中的数值合并追加到name数组最后,txt这个数组还是保留内容>>> print (name)['longyucen', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'bb', 'abc', 'aa', 'b', 122, 33, 444, 'long', 'texi']#反转数据--把最后的数据换到最前面来>>> txt['aa', 'b', 122, 33, 444, 'long', 'texi']>>> txt.reverse()>>> print (txt)['texi', 'long', 444, 33, 122, 'b', 'aa']#清空列表中的值>>> txt.clear()>>> print (txt)>>> []#列表排序>>> txt.sort() #3.0不能直接排序,2.0可以直接排序(数字在前,字符在后)#删除数值并返回该数值>>> txt.pop() #删除数值并返回删除的数值。默认删除最后一个数值,括号中的参数为数值的下标#复制列表数据>>> a[1, 2, 3, 5, 6, 7, 8]>>> a1 = a.copy() #完全复制上一个列表中的数据>>> a1[1, 2, 3, 5, 6, 7, 8]#复制后更改a列表或a1列表中的数据都不会改变对方的数据,表明两个列表相互独立>>> a[0]="alex">>> a['alex', 2, 3, 5, 6, 7, 8]>>> a1[0]="ALEX" >>> a1['ALEX', 2, 3, 5, 6, 7, 8]#列表中可嵌套一个列表,但是复制的列表只会复制第一层的列表数据,第二层的列表数据在被两个列表修改时都会同时发生变化,这表示这第二层的数据只能是被两个列表共享(引用内存地址)相当于两者拥有这个第二层列表数据(内存地址)的软链接,而不能成为两者的独立数据![](media/14887020557116/14887209442457.jpg)>>> a.insert(1,[1,2,3,4,5,6])>>> a['alex', [1, 2, 3, 4, 5, 6], 2, 3, 5, 6, 7, 8]>>> a1 = a.copy()>>> a1['alex', [1, 2, 3, 4, 5, 6], 2, 3, 5, 6, 7, 8]>>> a[1][2] = 33333>>> a['alex', [1, 2, 33333, 4, 5, 6], 2, 3, 5, 6, 7, 8]>>> a1[1][3] = 4444>>> a1['alex', [1, 2, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]>>> a['alex', [1, 2, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]#a.copy()与copy库中的copy.copy(a)得出的结果是一样的>>> import copy>>> a2=copy.copy(a)>>> a2['alex', [1, 2, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]>>> a['alex', [1, 2, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]>>> a[1][1]=22222>>> a['alex', [1, 22222, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]>>> a2['alex', [1, 22222, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]#完全克隆所有列表中的数据>>> import copy>>> a3=copy.deepcopy(a)>>> a3['alex', [1, 22222, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]>>> a[1][1]=223333>>> a['alex', [1, 223333, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]>>> a3['alex', [1, 22222, 33333, 4444, 5, 6], 2, 3, 5, 6, 7, 8]

数据的切分

#切分列表中"Jack"中的"a">>> name[2:3][0] #我不明白为什么要先取到自己才可以切分自己?'Jack'>>> name[2:3][0][1]'a'

列表步长的打印

#默认列表的步长为1,因此若要隔一个数值打印一个数值步长为2>>> name['longyucen', 'minghu', 'Jack', 22, 23, 23, 3, 4, 5, 7, 87, 89, 9, 9, 4, 22, 'bb', 'abc']>>> name[0::2] #由于要打印列表的最后一位,因此不写结束的小标['longyucen', 'Jack', 23, 3, 5, 87, 9, 4, 'bb']>>> name[::2] #"::"该形式表示从开头到结束['longyucen', 'Jack', 23, 3, 5, 87, 9, 4, 'bb']

练习

#写一个列表,列表中插入一些数值>>> txt = ["a","b",122,33,444,"long","texi"]>>> txt['a', 'b', 122, 33, 444, 'long', 'texi']#往中间插入两个数值>>> txt['a', 'b', 122, 33, 444, 'long', 'texi']>>> txt.insert(3,"jack")>>> txt.insert(4,"book")>>> txt['a', 'b', 122, 'jack', 'book', 33, 444, 'long', 'texi']#取出第3-8的列表>>> txt[2:8][122, 'jack', 'book', 33, 444, 'long']#删除第7个数值>>> txt['a', 'b', 122, 'jack', 'book', 33, 444, 'long', 'texi']>>> txt[6] #取第7个值444>>> txt.remove(txt[6])>>> txt['a', 'b', 122, 'jack', 'book', 33, 'long', 'texi']#把刚才加入的两个数值删除#del python全局命令,删除内存中的数据>>> txt['a', 'b', 122, 'jack', 'book', 33, 'long', 'texi']>>> txt[3:5]['jack', 'book']>>> del txt[3:5]>>> txt['a', 'b', 122, 33, 444, 'long', 'texi']#删除整个变量 "del txt"#为第一个数值进行更改>>> txt['a', 'b', 122, 33, 444, 'long', 'texi']>>> txt[0]="aa">>> txt['aa', 'b', 122, 33, 444, 'long', 'texi']#隔一个数值打印一个(全部数值)--步长>>> txt['aa', 'b', 122, 33, 444, 'long', 'texi']>>> txt[::2]['aa', 122, 444, 'texi']

查看列表中是否存在相关数值

>>> txt['aa', 'b', 122, 33, 444, 'long', 'texi']>>> print (122 in txt) #查看122是否在该列表中,在则返回值为真True>>> print (22 in txt) #不存在则返回值为假False#使用if语句判断元素是否存在在列表中#pycharm中:txt = ['aa', 'b', 122, 33, 444, 'long', 'texi']if 122 in txt: #判断是否存在    num_of_ele = txt.count(122) #统计有多少个122,函数是count    print("%s's 122 is in txt" % num_of_ele)#python3中:>>> if 122 in txt:...     print("122 is in txt") #在python控制台中,代码自己不会自动缩进... 122 is in txt

判断是否存在在数组中并修改该值

#!/usr/bin/env python#-*-coding:UTF-8-*-txt = ['aa', 'b', 122, 33, 444, 122,'long', 'texi']if 122 in txt:    count = txt.count(122) #统计有多少个”122“    position = txt.index(122) #查询到122的索引位置    txt[position] = 1222    print("%s's 122 is in txt,position:[%s]" % (count,position))    print(txt)#语句扩展--修改所有122的值#!/usr/bin/env python#-*-coding:UTF-8-*-txt = ['aa', 'b', 122, 33, 444, 122,'long', 'texi']for i in range(txt.count(122)):    txt[txt.index(122)] = 14444    print(txt)

查看元素的源代码

Pycharm软件下
windows环境下按住crtl键,鼠标点向这个元素,会弹出该元素的原代码解释
MAC OS环境下按住command键

0 0
原创粉丝点击