码迷,mamicode.com
首页 > 编程语言 > 详细

python:序列_元组(常用基础知识)

时间:2018-10-27 22:34:38      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:最大   key   推导式   范围   lower   int   基本   表达式   sort   

详细如下:

#元组:不可变列表,值不可修改,顺序不可变

#元组有很多继承序列的内容如下:
#序列索引从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\n序列最大值:%d\n序列最小值:%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,\t\t,end=‘‘)  #\t:横向空出一个制表符的位置;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):\n,sorted(c))  #序列排序,c内原本顺序不会变
print(sorted(c,key=str.lower,reverse=True):\n,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((测试元组,)),\t\t,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,结果:()

#元组比列表的访问和处理速度快,元组可以作为字典中的键。

 

python:序列_元组(常用基础知识)

标签:最大   key   推导式   范围   lower   int   基本   表达式   sort   

原文地址:https://www.cnblogs.com/jxba/p/9863700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!