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]
    列表冒号
  • 相关阅读:
    LeetCode 1245. Tree Diameter
    LeetCode 1152. Analyze User Website Visit Pattern
    LeetCode 1223. Dice Roll Simulation
    LeetCode 912. Sort an Array
    LeetCode 993. Cousins in Binary Tree
    LeetCode 1047. Remove All Adjacent Duplicates In String
    LeetCode 390. Elimination Game
    LeetCode 1209. Remove All Adjacent Duplicates in String II
    LeetCode 797. All Paths From Source to Target
    LeetCode 1029. Two City Scheduling
  • 原文地址:https://www.cnblogs.com/chenyanliang/p/6874353.html
Copyright © 2011-2022 走看看