zoukankan      html  css  js  c++  java
  • python3:序列_元组(常用基础知识)

    详细如下:

    #元组:不可变列表,值不可修改,顺序不可变
    
    #元组有很多继承序列的内容如下:
    #序列索引从0开始,从最后起则索引为-1
    a = (1,8,3,9,5,6)
    b = ('小一','小二','小三')
    c = ('Wang','baby','maya','Jiang','an')
    aa = list(range(1,11,2))
    print(aa)
    print(a[2],a[-1],a[-3]) #输出第几项
    
    #切片
    print(a[::2])   # 默认从0到最后,每两个输出一个
    print(a[1:4:2]) # 从第一个到第四个,每两个
    print(a[:2])    # 前三个
    print(a[:])     # 全部
    
    print(a+b)      #序列相加
    print(a*3)      #序列乘
    
    #检查序列成员
    print('小三' in b)  #in 在,not in 不在,结果为true
    #序列长度、最大值、最小值;%d数字替代符,n换行符
    print("序列长度:%d
    序列最大值:%d
    序列最小值:%d" %(len(a),max(a),min(a)))
    
    print(list(a))    #序列转为元组
    print(str(a))     #序列转为字符串
    print(sum(a))     #序列元素+
    print(sorted(a))  #序列排序,a内原本顺序不会变
    print(list(reversed(a))) #反向元素,a内原本顺序不会变
    #序列索引和元素组合
    print(list(enumerate(a)))
    for i,element in enumerate(a):
        print(i,element)
    
    
    # -------------------元组-------------------------
    #除了对元素的顺序和内容不可添加、修改、删除外,元组有很多同列表一样的功能
    #遍历元组
    print('遍历元组')
    for item in a:
        print(item)
    
    #将a分两列输出
    print('将a分两列输出')
    for index,item in enumerate(a):
        if index%2 ==0:
            print(item,'		',end='')  #	:横向空出一个制表符的位置;end='':接下来输出的内容不要换行显示,即:index 0不换行,1换行,2不换行,3换行
        else:
            print(item)
    
    
    #统计元素的数量a.count()
    print(a.count(9))  #结果1
    print(a.index(9))  #结果2,9首次出现的索引号
    
    #元组的排序
    print('sorted(c):
    ',sorted(c))  #序列排序,c内原本顺序不会变
    print('sorted(c,key=str.lower,reverse=True):
    ',sorted(c,key=str.lower,reverse=True))  #倒序排序,c内原本顺序不会变
    print(c)
    
    #元组推导式:(用列表创建的表达式依然可成功创建,******注意:记得加上tuple()******)
    #生成指定范围的数值元组
    import random
    d = tuple(random.randint(11,20)*2 for i in  range(10)) #random.randint(30,90)*2:元素表达式,i:针对后面range的循环变量
    print(d)
    #生成指定需求的元组,如d的5折
    e = tuple(int(x*0.5) for x in d) #x*0.5:元素表达式;x:d中的元素
    print(e)
    #生成符合条件的元组,如f元组需要0.5的d元素,且0.5d元素依然为偶数
    f = tuple(int(x*0.5) for x in d if int(x*0.5)%2==0) #x*0.5:元素表达式;x:d中的元素
    print(f)
    #创建数字元组
    ff = tuple(range(1,13,3))
    print(ff)
    
    
    #二维元组
    #使用推导式创建二维元组(用列表创建的表达式依然可成功创建)
    g =tuple([random.randint(3,8) for j in range(3) ] for i in range(4))
    print(g)
    print(g[1][2])  #单个元素
    
    #横版输出古诗,纵版输出古诗
    str1 = "千山鸟飞绝"
    str2 = "万径人踪灭"
    str3 = "孤舟蓑笠翁"
    str4 = "独钓寒江雪"
    #list1 = tuple((str1),(str2),(str3),(str4))  # 如果这样写会提示:TypeError: tuple() takes at most 1 argument (4 given)
    list1 = ((str1),(str2),(str3),(str4))        #正确写法,去掉tuple
    
    print('------------横向古诗-方法1------------')
    for itemh in list1:                 #每个子元组存在于元组中
        for item in itemh:              #每个字存在于子元组中
            if itemh.index(item) ==4:   #子元组中最后一个字换行打印,其余不换行打印
                print(item)
            else:
                print(item,end='')
    
    
    print('------------横向古诗-方法2------------')
    
    for i in range(4):                 #每个子元组存在于元组中
        for j in range(5):              #每个字存在于子元组中
            if j==4:   #子元组中最后一个字换行打印,其余不换行打印
                print(list1[i][j])
            else:
                print(list1[i][j],end='')
    
    
    print('------------纵向古诗-方法1------------')
    list2 = tuple(reversed(list1))   #倒叙古诗句子
    
    for i in range(5):
        for j in range(4):
            if j ==3:
                print(list2[j][i])
            else:
                print(list2[j][i],end='')
    
    
    #元组常需注意内容
    #①如果只有一个元素,记得加逗号
    print(type(('测试元组',)),'		',type(('测试元组')))  #结果:<class 'tuple'>          <class 'str'>
    
    #②元组内元素不可添加、修改、删除、更换顺序等,但可对元素重新赋值。
    '''③元组推导式,同列表基本一致,需要注意的是记得加上tuple()函数,
    即:f = tuple(int(x*0.5) for x in d if int(x*0.5)%2==0)******注意:记得加上tuple()'''
    
    nubmer1 = (i for i in range(3))
    print(type(nubmer1))                 #<class 'generator'>
    nubmer = tuple(i for i in range(3))
    print(type(nubmer))                  #<class 'tuple'>
    print(nubmer1.__next__())
    print(nubmer1.__next__())
    print(nubmer1.__next__())
    print(tuple(nubmer1))                #.__next__():遍历生成器对象后,无法再对nubmer1转化为tuple,结果:()
    
    #元组比列表的访问和处理速度快,元组可以作为字典中的键。
  • 相关阅读:
    乐字节Java编程语言发展,面向对象和类
    乐字节Java编程之方法、调用、重载、递归
    乐字节Java循环:循环控制和嵌套循环
    乐字节Java反射之四:反射相关操作
    乐字节Java反射之三:方法、数组、类加载器和类的生命周期
    乐字节Java反射之二:实例化对象、接口与父类、修饰符和属性
    乐字节Java反射之一:反射概念与获取反射源头class
    Java变量与数据类型之三:数据类型与转义字符
    数论 N是完全平方数 充分必要条件 N有奇数个约数
    动态规划专题 01背包问题详解 HDU 2546 饭卡
  • 原文地址:https://www.cnblogs.com/jxba/p/9863700.html
Copyright © 2011-2022 走看看