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

2018-01-06  本文已影响25人  hello_我的哥

什么是列表?

列表就是可变的有序的元素集合,列表里面的每一个元素都有他的下标,其实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]

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

上一篇下一篇

猜你喜欢

热点阅读