Python---基本知识12之常用数据类型列表

什么是列表?

列表就是可变的有序的元素集合,列表里面的每一个元素都有他的下标,其实python里面的列表就有些像java里面的数值,

列表的表现形式:从下面这个列表我们可以看出来,列表是用一对[],然后里面的类型是object,什么类型都可以,也可以嵌套列表;

name=['zhangsan','lisi',18,19,True,[8,6]]

列表的赋值方式:上面就是一种赋值方式,直接赋值,还有一个range()函数也可以完成列表的赋值:这个函数,有3个参数,第一个参数是起始位置,然后是终点位置,最后一个是步长,也是左闭右开区间;对于range()函数,需要注意一点就是在python3里面你用到这个列表的时候才会生成,如果你没有用到这个列表是不会生成的

age=range(5,91,2)

第二种赋值方式:列表推导式,用for  in 语句,用这种方式可以把一个列表进行克隆或者是说变大或者缩小;

age=[1,2,3,5,7,9,11]

age1=[num for num in age if num%2==0]

print(age1)

列表的常用操作,这个对于列表来说还是比较重要的,就和之前说的字符串的常用操作一样,主要有四种常用操作:

增:

A:通过append()语句,用于在列表的末尾增加一个元素;

age = [9]

age.append(10)

print(age)

B:通过insert语句,可以把一个object插入你想插入的地方;

age = [9]

age.insert(0,10)

print(age)

C:通过extend()语句,可以把一个列表增加多个值,但是这些值也是只能增加在最后;

tag=[2,8,10]

age = [9]

age.extend(tag)

print(age)

D:通过乘法运算和加法运算也可以把列表增加:乘法就是把自己乘多少遍,加法就是在最后连接一个列表,需要注意一点就是这两种方式不会修改原列表;

tag='woshishui'

age = [9]

age*=5

age+=tag

print(age)

删:

A:pop()语句,删除对应下标值的元素;默认是-1,即最后一个元素;

age=[1,2,3,4,5,6,7,8]

age.pop(0)

print(age)

B:remove()语句,删除对应的object元素,默认是移除最左边的一个object

age=[1,2,3,4,5,6,7,8]

age.remove(1)

print(age)

C:del语句,这个就厉害了,这个会删除内存地址,即会把你的存储空间都删掉

age=[1,2,3,4,5,6,7,8]

del age

改:可以通过下标值去直接修改object,需要注意的是[]里面的值是下标值;

age = [1, 2, 3, 4, 5, 6, 7, 8]

age[1] = 8

print(age)

查:

A:获取单个元素

age = [1, 2, 3, 4, 5, 6, 7, 8]

print(age[2])

B:获取元素索引,Index()语句,第一个元素是object值,第二个元素是起始位置,第三个元素是终点位置;

age = [1, 2, 3, 4, 5, 6, 7, 8,2,8,2]

print(age.index(2,-2))

C:获取指定元素个数:count()

age = [1, 2, 3, 4, 5, 6, 7, 8,2,8,2]

print(age.count(2))

D:切片,就和string一个形式,第一个参数是起始位置,第二个参数是终点位置,第三个参数是步长,需要注意一点就是中间是用:间隔符;如果步长是负数,就是从最后一个开始往前面取值,

age = [1, 2, 3, 4, 5, 6, 7, 8, 2, 8, 2]

print(age[1:8: 2])

E:反转[::-1]

age = [1, 2, 3, 4, 5, 6, 7, 8, 2, 8, 2]

print(age[:: -1])

F:遍历

F.1通过元素进行遍历:

age = ['a','v','f','g','s','w']

for v in age:

    print(v)

F.2通过索引进行遍历:首先应该得到元素的索引,然后通过索引就能拿到元素的值了:

age = ['a','v','f','g','s','w']

indexs=range(len(age))

for v in indexs:

    print(age[v])

F.3通过枚举对象遍历:通过枚举函数,将一个可遍历的对象生成一个新的对象,这个对象的每一个元素都包含之前对象的下标和对应值;由于枚举对象的每一个元素都是一个元祖对象,所以也可以这样写 a,b

age = ['a','v','f','g','s','w']                            

enum =enumerate(age)

for e in enum:

    print(e)

age = ['a','v','f','g','s','w']

enum =enumerate(age)

for a,b in enum:

    print(a,b)

F.4通过迭代器进行遍历:在讲通过迭代器进行遍历之前,需要讲两个概念一个就是可迭代对象,一个是迭代器,可迭代对象实际上就是指这个对象拥有遍历的这个属性,可以使用for in进行遍历,那么这个对象就是可迭代对象,另外一个使用一个函数进行验证,isinstance,这个函数相当于是判断这个对象是否拥有这个能力,

判断是否可迭代

import collections

age = ['a','v','f','g','s','w']

result=isinstance(age,collections.Iterable)

print(result)

那么什么又是迭代器呢,迭代器是可以记录遍历位置的对象,也就是说你把一个列表转成迭代器之后,迭代器本身就拥有了遍历的能力了,也就是可以自己完成遍历了,当然迭代器也是可迭代对象,所以自然也可以用for in 语句,把一个可迭代对象转成迭代器使用:iter()函数;判断是否是迭代器也有两种方式,第一就是可不可以自己完成遍历过程,也就是调用next()函数,第二也是用isinstance函数,

it=iter(age)

result=isinstance(it,collections.Iterator)

next(it)

print(result)

===========================

it=iter(age)

result=isinstance(it,collections.Iterator)

next(it) for i in it:

    print(i)

print(result)

迭代器的优点:节约内存空间,他只有一个内存地址保存当前遍历到的对象,这之前,之后的对象都没有分配内存地址,也提供了统一的针对可迭代对象进行遍历的接口;需要注意一点是迭代器只能迭代一次,不能多次使用;

G:判定,判断一个元素是否在一个集合里面,用in  not in语句;

age = ['a','v','f','g','s','w']

newStr='a'

newStr1='l'

result=newStr in age

result1=newStr1 not in age

print(result,result1)

H:比较,对于比较的话,python2用的是cmp()函数,而python3用的是比较符:> < ==

H.1 python3:

list = [1, 9, 6]

list1 = [1, 8, 7]

resule = list > list1

print(resule)

H.2 python2

list = [1, 9, 6]

list1 = [1, 8, 7]

result=cmp(list1,list)

print(result)

I.排序,有两种方式,一种就是用内建函数,sorted,第二种用列表对象方法,list.sort()两种方法都是大同小异,先说第一种:

list=['k','a','s','w','j']

result=sorted(list,reverse=True)

print(result)

reverse控制的是增序,还是降序,默认是增序,设置为True就是降序;还有一种情况就是指定排序的元素,比如:这种情况就针对一个元素有多个值得情况,我们可以让它对哪个进行排序;

list=[('n',5),('w',8),('h',9),('t',1),('b',3),('l',7)]

def getkey(x):

    return x[1]

result=sorted(list,key=getkey)

print(result)

list.sort()方法,是针对于列表本身得,所以通过这种方式改变得是列表本身,也并没有返回值,sorted方法呢,是内建函数,他不会改变列表本身,只会将列表排好序之后返回出来;

J:乱序,就是把列表得顺序打乱,通过得是random得shuffle()函数,打乱得是列表本身

list=[('n',5),('w',8),('h',9),('t',1),('b',3),('l',7)]

random.shuffle(list)

print(list)

K:反转,两种方式,一种是直接调用:reverse(),这种方式反转得是列表自己,另一种用切片反转;这种方式,列表不会改变:

list.reverse()

res=list[::-1]

好了 ,列表所有操作结束了;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容