zoukankan      html  css  js  c++  java
  • Python之数据结构:列表

    列表:处理一组有序项目的数据结构
    一、基本操作
    1、列表运算符
    list1=[2,3,4,5,6,7,8]
    print len(list1)
    print [1,2]+[3,4]
    print ['Hi']*4
    print 4 in list1
    for i in list1:
    print i
    list2=list1
    list3=list1[:]
    print list2 is list1 TRUE
    print list3 is list1 FALSE
    shoplist = ['apple','mongo','carrot','banana']
     
    2、新增元素
    shoplist.append('rice')
    print u'新购物清单',shoplist
    结果:新购物清单 ['apple', 'mongo', 'carrot', 'banana', 'rice']
     
    3、删除一个元素
    list1=[1,2,3,4,5,6,7]
    list1.remove(3) 值操作,没有返回值
    del list1[2] 下标操作
    list1.pop(2) 下标操作,有返回值
     
    4、比较两个列表中的元素是否相等
    cmp(list1,list2)
    1,0,-1 返回值
    list1 == list2
    str(list1) == str(list2)
     
    5、取出列表中的最大元素:两种方法
    max(list1)
    list1.sort() list1[-1]
     
    6、插入一个元素
    list1.insert(2,1024) 在下标是2的位置插入1024元素
     
    7、合并列表
    listA=[1,2,3]
    listB=[9,4,5]
    listA.extend(listB)
    或者 listA = listA+listB
    print listA
    结果:[1, 2, 3, 9, 4, 5]
     
    8、二维列表
    listC=[[1,2,3],[21,22,23]]
    print u'第一个元素',listC[0]
    print u'第一个元素',listC[0][0]
    结果:
    第一个元素 [1, 2, 3]
    第一个元素 1
     
    9、统计列表[1,2,3,4,5,6,3,4,5,6,3]中3出现的次数,不少于两种方法
    list1.count(3)
    sum=0
    for i in list1:
    if i == 3:
    sum +=1
    print sum
     
    10、判断某个变量是否属于某一类
    if isinstance(listC,list):
    print‘ok’
    结果:ok
    或者:if type(listC) == list:
     
    11、反转列表
    list1=list(reversed(list1))
    list1.reverse() 直接修改了list1,不需要再给list1赋值
    list1=list1[::-1]
     
    获取元素的下标
    list1.index(454)
    for i in xrange(len(list1)):
    if list1[i] == 454:
    print i
    break
    二、高级应用
    1、切片
    说明:
    listA[startponit : endPonit :step(步长)],切片之后得到一个新的列表
    startPoint:endPoint 前闭后开
     
    (1)切片操作,非常重要
    listA=[1,2,3,4,5,6]
     
    print listA[0:4]
    结果:[1, 2, 3, 4]
     
    print listA[0:4:2]
    结果:[1, 3]
     
    (2)步长为负数, 实现逆序输出
    print listA[::-1]
    结果:[6, 5, 4, 3, 2, 1]
     
    2、列表变为字符串
    listB=['a','b','c']
    print ''.join(listB)
    结果:abc
     
    3、列表生成器
    (1)第一种 range(a:b:c)
    list1=range(10)
    print list1
    结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     
    list2=range(2,10)
    print list2
    结果:[2, 3, 4, 5, 6, 7, 8, 9]
     
    list3=range(2,10,2)
    print list3
    结果:[2, 4, 6, 8]
     
    (2)第二种
    list4=[x*x for x in range(10)]
    print list4
    结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
     
    list3 = [m+n for m in 'ABC' for n in 'XYZ']
    结果:AX,AY,AZ,BX,BY,BZ,CX,CY,CZ
     
    list1 = [1,2,3,4]
    list2 = [2*i for i in list1 if i>2]
     
    list3 = [m+n for m in 'ABC' for n in 'XYZ']
     
    dict4 ={'x':'A','y':'b','z':'C'}
    list4 = [k+'='+v for k,v in dict4.items()]
     
    L = ['Hello','World','IBM','Apple']
    list5 = [s.lower() for s in L]
     
    4、sort()方法 排序
    sort(cmp=None,key=None,reverse=False)
    cmp:默认通过ascii值比较,可定义使用其他的值进行比较
    cmp:为一个定制的比较函数,接受两个参数,并且如果第一个参数小于第二个参数,则返回一个负数,大于则返回一个整数,等则返回0。默认值为None。
    key:默认列表中的一个元素。通过什么去比较,可以自定义函数 key的使用场景比较多
    reverse:默认升序,reverse=True,逆序
    eg:
    list1=[(1,5,3),(1,1,2,3,4),(1,6)]
    def L(tup):
    return len(tup)
    list1.sort(key=L,reverse=True)
    print list1
     
    eg:list1 = [(-1,5,3),(-5,3,6,3),(1,1,2,4,5,6),(2,9),(-2,10)],使用元组的第一个元素大小比较来实现 list 的排序,逆序排列。
    list1 = [(-1,5,3),(-5,3,6,3),(1,1,2,4,5,6),(2,9),(-2,10)]
    def L(tup):
    return abs(tup[0])
    list1.sort(cmp=cmp,key=L,reverse=True)
    print list1
     
     
  • 相关阅读:
    sql刷题day03
    sql刷题day2
    sql刷题day1
    Vue学习
    HashMap学习笔记整理
    数组问题(鸽巢原理、数字交换、链表寻环)
    mybatis参数设置问题
    codeforces 327A
    codeforces 189A
    codeforces-455A
  • 原文地址:https://www.cnblogs.com/emily-qin/p/6994464.html
Copyright © 2011-2022 走看看