zoukankan      html  css  js  c++  java
  • Python 列表和元组

    1、数据结构:通过某种方式组织在一起的数据元素的集合

    2、在Python中,最基本的数据结构是序列(sequence),最后一个元素标记为-1,倒数第二个元素为-2,第一个元素位于最开始,索引为0

    3、Python包含6种内建的序列,最常用的两种类型:列表和元组.其他的内建序列类型有字符串、Unicode字符串、buffer对象和xrange对象

    4、列表和元组的主要区别在于,列表可以修改,元组则不能

    months = [
        'January',
        'February',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December'
    ]
    endings = ['st','nd','rd'] + 17*['th']
            + ['st','nd','rd'] + 7*['th']
            + ['st']
    
    year  = raw_input('Year: ')
    month = raw_input('Month(1-12): ')
    day   = raw_input('Day(1-31): ')
    
    month_number = int(month)
    day_number   = int(day)
    
    month_name = months[month_number-1]
    ordinal = day + endings[day_number-1]
    
    print month_name + ' ' + ordinal + '. ' + year
    索引示例

    5、使用分片操作来访问一定范围内的元素。分片通过冒号相隔两个索引.第一个索引的元素包含在分片内,而第二个则不包含在分片内

    numbers = [1,2,3,4,5,6,7,8,9,10]
    print numbers[3:6]
    # [4,5,6]
    print  numbers[-3:]
    # [8,9,10]
    
    url = raw_input('Please enter the URL: ')
    domain = url[11:-4]
    print "Domain name: " + domain
    # Please enter the URL: http://www.python.org
    # Domain name: python
    分片示例

    6、进行分片的时候,还有一个隐式参数步长(step length),如果步长为负数,即从右到左提取

    7、序列相加,两种相同类型的序列才能进行连接操作

    8、乘法: 用数字x乘以一个序列生成新的序列,在新的序列中,原来的序列将被重复x次

    # 创建一个占有十个元素空间
    sequence = [None] * 10
    print sequence
    # [None, None, None, None, None, None, None, None, None, None]
    
    nums = [1,2,3]
    print nums*4
    # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
    乘法示例

    9、为了检查一个值是否在序列中,使用in运算符.然后返回相应的值:条件为真返回Ture,条件为假返回False

    permissions = 'rw'
    print 'r' in permissions
    print 'e' in permissions
    # True
    # False
    
    users = ['mlh', 'foo', 'bar']
    you_name_is_exist = raw_input('Enter your user name: ') in users
    print you_name_is_exist
    # Enter your user name: 45
    # False
    
    subject = '$$$ Get rich now!! $$$'
    print '$$' in subject
    # True
    
    # 检查用户名和PIN码
    database = [
        ['albert', '1234'],
        ['dilbert','4242'],
        ['smith',  '7524'],
        ['jones',  '9843']
    ]
    
    username = raw_input('User Name: ')
    pin = raw_input('PIN code: ')
    
    if [username, pin] in database: print 'Access granted'
    # User Name: smith
    # PIN code: 7524
    # Access granted
    View Code

    10、内建函数len、min和max。len函数返回序列中包含元素的数量,min函数和max函数则分别返回序列中最大和最小的元素

    # 元素赋值
    x = [1,1,1]
    x[1] = 2
    print x
    # [1, 2, 1]
    
    # 删除元素
    del x[2]
    print x
    # [1, 2]
    
    # 分片赋值
    name = list('Perl')
    name[2:] = list('ar')
    print name
    # ['P', 'e', 'a', 'r']
    # 分片赋值是将原序列不等长的序列分片替换
    
    numbers = [1,5,6]
    numbers[2:3] = [2,3,4]
    print numbers
    # [1, 5, 2, 3, 4]
    
    # 利用分片赋值删除元素
    nums = [1,2,3,4,5]
    nums[1:4] = []
    print nums
    # [1, 5]
    分片赋值

    11、列表方法

      调用: 对象.方法(参数)

      append方法用于在列表末尾追加新的对象(直接修改原来的列表)

      count方法统计某个元素在列表中出现的次数

      extend方法可以在列表的末尾一次性追加另一个序列中的值

      index方法用于从列表中找出某个值第一个匹配项的索引位置

      insert方法用于将对象插入到列表中

      pop方法会移除列表中的一个元素(默认是最后一个),并返回该元素的值.pop方法是唯一一个既能修改列表又返回元素值(处理None)的列表方法

      remove方法用于移除列表中某个值的第一个匹配项

      reverse方法将列表中的元素反向存放

      sort方法用于在原位置对列表进行排序.sorted会返回已排序的列表副本

    aname = [1,2,3]
    aname.append(4)
    print aname
    # [1, 2, 3, 4]
    
    print ['to','at','or','on','to','in','to'].count('to')
    # 3
    
    a = [1,2,3]
    b = [4,5,6]
    print a+b
    # # [1, 2, 3, 4, 5, 6]
    a.extend(b)
    print a
    # [1, 2, 3, 4, 5, 6]
    
    knight = ['we','are','the','knights','who','say','ni']
    print knight.index('who')
    # 4
    
    numbers = [1,2,3,5,6,7]
    numbers.insert(3,'four')
    print numbers
    # [1, 2, 3, 'four', 5, 6, 7]
    
    x = [1,2,3,4,5]
    print x.pop()
    # 5
    
    y = ['to','be','or','on']
    y.remove('to')
    print y
    # ['be', 'or', 'on']
    
    z = [1,3,2,5,4]
    z.reverse()
    print z
    # [4, 5, 2, 3, 1]
    
    m = [4,6,2,5,7,1,3,0,9]
    print sorted(m)
    print m
    # [0, 1, 2, 3, 4, 5, 6, 7, 9]
    # [4, 6, 2, 5, 7, 1, 3, 0, 9]
    m.sort()
    print m
    # [0, 1, 2, 3, 4, 5, 6, 7, 9]
    
    # len作为键函数(按元素长度排序)
    n = ['aardvark','abalone','acde','add','aerate']
    n.sort(key=len)
    print n
    # ['add', 'acde', 'aerate', 'abalone', 'aardvark']
    列表方法

    12、元组与列表一样,也是一种序列.唯一的不同是元组不能修改.

      创建元组的语法很简单:如果你用逗号分隔了一些值,那么你就自动创建了元组

      tuple函数的功能与list函数基本上是一样的:以一个序列作为参数并把它转换为元组

      元组的分片还是元组,列表的分片还是列表

      元组是不可替代的:元组可以在映射(和集合的成员)中当作键使用,而列表则不行

    # 元组中的元素值是不允许修改的,但是我们可以对元组进行连接组合
    m = (1,2,3)
    n = (4,)
    print m+n
    # (1, 2, 3, 4)
    
    # 创建空元组
    tup = ()
    
    # 元组只包含一个元素时,需要在元素后面添加逗号
    tup1 = (50,)
    
    print 3*(40+2)
    # 126
    print 3*(40+2,)
    # (42, 42, 42)
    
    print tuple('abcd')
    # ('a', 'b', 'c', 'd')
    元组示例

    13、tuple和list不是真正的函数,而是一种类型

    14、列表的冒号操作

    ## 列表操作
    list1 = [9,8,7,6,5,4,3,2,1,0]
    print(list1[0:])
    # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    print(list1[1:])
    # [8, 7, 6, 5, 4, 3, 2, 1, 0]
    print(list1[:-1])
    # [9, 8, 7, 6, 5, 4, 3, 2, 1]
    print(list1[3:-3])
    # [6, 5, 4, 3]
    print(list1[::2])
    # [9, 7, 5, 3, 1]
    print(list1[2::])
    # [7, 6, 5, 4, 3, 2, 1, 0]
    # 一个冒号,两个参数表示起始位置,默认间隔为1
    # 两个冒号,前两个参数表示起始位置,最后一个参数表示间隔
    print(list1[::3])
    # [9, 6, 3, 0]
    print(list1[::-1])
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    列表冒号
  • 相关阅读:
    "Principles of Reactive Programming" 之<Actors are Distributed> (3)
    Clojure语法学习-循环
    建立Clojure开发环境-使用IDEA和Leiningen
    速查笔记(Linux Shell编程<上>)
    Exception thrown in catch and finally clause
    linux fork的缺点
    redhat6.4 install 163 source
    linux /etc/hosts 配置问题
    linux sed
    STL 源码分析 (SGI版本, 侯捷著)
  • 原文地址:https://www.cnblogs.com/chenyanliang/p/6874353.html
Copyright © 2011-2022 走看看