zoukankan      html  css  js  c++  java
  • Python元组与字符串操作(9)——随机数、元组、命名元组

    随机数

    import random  #导入random模块

    randint(a,b) 返回[a,b]之间的整数

    random.randint(0,9)

    randrange([start],stop,[step]) 从指定范围内,按指定step基数递增的集合中,获取一个随机数,基数缺省为1

    random.randrange(2,15,5)
    7

    choice(seq) 从非空序列的元素中随机挑选一个元素

    random.choice(range(10))
    random.choice([0,1,2,3,4,5,6,7,8,9])
    
    list
    = [0,1,2,3,4,5,6,7,8,9] random.choice(list)

    random.shuffle(list) 就地打乱列表元素

    list = [0,1,2,3,4,5,6,7,8,9]
    random.shuffle(list)
    list
    [2, 4, 7, 0, 3, 9, 8, 6, 1, 5]

    sample(population,k) 从样本空间或总体(序列或集合类型)中随机取出k个不同元素,返回一个新的列表

    random.sample([0,1,2,3,4,5,6,7,8,9],2)
    [5, 4]
    random.sample([1,1,1,1],2)
    [1, 1]

    元组

    tuple,有序的元素组成的集合,使用小括号()表示

    元组是不可变的对象

    元组的定义

    tuple()    #空元组
    t = tuple()
    t = ()
    
    t = tuple(range(1,7,2))
    t = (2,4,6,3,4,2)
    
    t = (1,)    #一个元素的元组定义,必须有逗号
    
    t = (1,)*5
    t = (1,2,3)*6

    元组通过索引访问

    tuple[index] 正负索引不可以超界,否则报异常IndexError

    t = (1,2,3,4,5)
    
    t[-2]
    4
    
    t[6]
    ---------------------------------------------------------------------------
    IndexError                                Traceback (most recent call last)
    <ipython-input-15-d806090743c9> in <module>
    ----> 1 t[6]
    
    IndexError: tuple index out of range

    元组不可改变,不支持元素赋值

    t[-2] = 5
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-16-748d3b852e35> in <module>
    ----> 1 t[-2] = 5
    
    TypeError: 'tuple' object does not support item assignment

    元组中的列表可以改变

    t = (1,2,3,[1,2,3],5)
    
    t[-2][0] = 9
    t
    (1, 2, 3, [9, 2, 3], 5)
    t = ([1,2],[3,4])*3
    t
    ([1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4])
    
    t[0][0] = 9
    t
    ([9, 2], [3, 4], [9, 2], [3, 4], [9, 2], [3, 4])

    元组查询

    index(value,start,stop) #通过元素值value,从指定区间查找元组内的元素是否匹配,匹配第一个就立即返回索引,匹配不到报异常ValueError,时间复杂度O(n)

    t = (2,3,4,5,6)
    t.index(4,0,3)
    2

    count(value) #返回元组中元素值value匹配次数,时间复杂度O(n)

    t = (2,3,4,5,6)
    t.count(2)
    1

    len(tuple) #返回元素个数,时间复杂度O(1)

    t = (2,3,4,5,6)
    len(t)
    5

    命名元组

    namedtuple(typename,field_names,verbose=False,rename=False)

    定义一个元组的子类,并定义了字段

    field_names可以是空白符或者逗号分割的字段的字符串,可以是字段的列表

    from collections import namedtuple
    # import collections
    # collections.namedtuple()  #两种导入方法 point
    = namedtuple('Point',['x','y']) point __main__.Point

    定义2个学生

    from collections import namedtuple
    
    point = namedtuple('student',['name','age'])    #多种写法
    # point = namedtuple('student','name,age')
    # point = namedtuple('student','name age')
    
    tom = point('tom',17)
    tom
    student(name='tom', age=17)
    
    jerry = point('jerry',18)
    jerry
    student(name='jerry', age=18)
  • 相关阅读:
    Qt类继承关系图
    回归Qt——写在Qt5.10发布之日
    Jdk1.7下的HashMap源码分析
    Jdk1.8下的HashMap源码分析
    八皇后||算法
    设计模式之一单例模式
    多线程之美8一 AbstractQueuedSynchronizer源码分析<二>
    多线程之美7一ReentrantReadWriteLock源码分析
    多线程之美6一CAS与自旋锁
    多线程之美5一 AbstractQueuedSynchronizer源码分析<一>
  • 原文地址:https://www.cnblogs.com/omgasw/p/11646738.html
Copyright © 2011-2022 走看看