zoukankan      html  css  js  c++  java
  • python第二天 列表、元组

    今天学习了列表、元组相关的知识:与C中的数组列表相似,元组为只读列表:

    以及切片相关操作:

     1 #!usr/bin/env python
     2 #-*-coding:utf-8-*-
     3 # Author calmyan
     4 #元组,列表
     5 names=['zy','gy','xp',['2r','t3','t4'],'lh','xc']
     6 print(names)
     7 print(names[0],names[2])
     8 print(names[1:3])#切片左往右
     9 print(names[2])#切片
    10 print(names[-1])#切片从后开始取
    11 print(names[-2:])#切片左往右最后的省略
    12 print(names)
    13 names.append('lh')#追加
    14 print('追加后;',names)
    15 names.insert(3,'crh')#插入位置
    16 print('插入位置后:',names)
    17 names[2]='ggy'#修改
    18 print('修改后:',names)
    19 del names[2]
    20 print('删除后:',names)
    21 print('统计个数:',names.count('lh'))#统计内空个数
    22 names_id=names.index('gy')#内容所在的下标
    23 names_user=names[names.index('gy')]#下标所对应的内容
    24 print(names_user)
    25 print(names_id)
    26 #names.clear()#清空列表
    27 print('原序列打印:',names)
    28 names.reverse()#反转列表
    29 print('反转序列打印:',names)
    30 #names.sort()#排号序默认为ACSII码表
    31 print('排号后打印:',names)
    32 
    33 names2=[1,2,3,4,5,6]
    34 names.extend(names2)#合并names2列表
    35 print('合并后打印:',names)
    36 print('第二列表:',names2)
    37 import copy
    38 names3=copy.deepcopy(names)#完全COPY
    39 #names3=names.copy()#复制names列表 赋于names3  浅复制 子列表为指针地址
    40 print('列表3',names3)
    41 print('列表1',names)
    42 names3[0]='修改1'
    43 names3[3][1]='修改二层'
    44 print('列表3',names3)
    45 print('列表1',names)
    46 for i in names:
    47     print (i)
    48 for i in range(names.__len__()):#__len__列表元素个数(长度)
    49     if names[i]=='crh':
    50         print(names[i])
    51         print(i)
    52 # for i in range(1,names.__len__(),2):
    53 #     print(i)
    54 print(names[0:-1:2])#开始位 结束位  步长()
    55 print(names[::2])#0和-1可以省略不写
    View Code

    import copy 浅层与深层COPY

     1 #!usr/bin/env python
     2 #-*-coding:utf-8-*-
     3 # Author calmyan
     4 import copy
     5 person=['name',['财务部','办公在六层']]
     6 p1=copy.copy(person)#浅COPY
     7 p2=person[:]#浅COPY
     8 p3=list(person)#浅COPY
     9 p1[0]=''
    10 p2[0]=''
    11 p3[0]=''
    12 person[1][1]='办公室改到七层'
    13 print(person,p1,p2,p3)
    View Code

    最后是字符串相关的操作:

     1 #!usr/bin/env python
     2 #-*-coding:utf-8-*-
     3 # Author calmyan
     4 #字符串操作
     5 name="my     name is {name} and age is {year}!"
     6 name_1="Abc123AA bbr"
     7 name_2=" "
     8 names=name.format(name="calmyan",year=35)#格式化字符
     9 print(names)
    10 print(names.count("m"))#统计该字符串中指定字符的个数
    11 print("添加TAB键的数量",names.expandtabs(tabsize=70))#添加TAB键的数量
    12 print(name.endswith("!"))#判断是否以指定字符结尾
    13 print(names.find("n"))#返回字符所在索引
    14 print(names[names.find("n"):names.find("!")])#返回字符所在索引,可进行切片操作
    15 print("判断类:")
    16 print("是否是在字母大小写和数字之间的范围:",name_1.isalnum())#是否是在字母大小写和数字之间的范围
    17 print("是否是在字母大小写之间的范围:",name_1.isalpha())#是否是在字母大小写之间的范围
    18 print("是否是在十进制整数的范围:",name_1.isdecimal())#是否是在十进制整数的范围
    19 print("是否是在整数的范围:",name_1.isdigit())#是否是整数的范围
    20 print("是否是在整数的范围:","123".isnumeric())#是否是整数的范围
    21 print("是否是空格:",names.isnumeric())#是否是空格
    22 print("是否是大写开头:",name_1.istitle())#是否是大写开头
    23 print("是否是全为大写:",name_1.isupper())#是否是全为大写
    24 print("指定字符对字符串进行分割(每个字符):")
    25 print(" ".join(names))#用指定字符对字符串进行分割,包括空格
    26 print(names.ljust(50,"*"))##指定该字符串的长度,不足用指定字符右端补齐
    27 print(names.rjust(50,"*"))##指定该字符串的长度,不足用指定字符左端补齐
    28 print(name.center(50,"="))#指定该字符串的长度,不足用指定字符两端补齐,字符串居中
    29 p=str.maketrans("abcdefg","1234567")#两个字符串进行一一对应替换
    30 print(p)
    31 print("gfedcba".translate(p))#传入将会显示对应的字符
    32 print("对指定字符进行替换:",name_1.replace("A","a"))#对指定字符进行替换,可选定数量,参数不填默认为全部
    33 print("对指定字符进行替换:",name_1.replace("A","a",2))#对指定字符进行替换,可选定数量
    34 print("查找最右边的指定字符:",name_1.rfind("3"))#查找最右边的指定字符,返回索引下标
    35 print("按指定字符进行分割:",name_1.split("3"))#按指定字符进行分割,字符串中指定字符去除
    36 print("按换行进行分割:",name_1.splitlines())#按换行进行分割
    37 print("字母大小写互换:",name_1.swapcase())#字母大小写互换
    38 print("首字母大写:",name_1.title())#首字母大写
    39 print(name_2.zfill(5))#指定字符串长度,不足左边用0补位 二进制运算
    View Code

    模拟购物车

    分享出来,共同进步!

     1 #!usr/bin/env python
     2 #-*-coding:utf-8-*-
     3 # Author calmyan
     4 #name_char=int(input("请输入工资(购物资金):"))#用户输入工资(购物资金)
     5 #商品列表
     6 goodsname=[('手机',2300),
     7            ('笔记本电脑',3500),
     8            ('平板电视',3900),
     9            ('电冰箱',1300),('电磁炉',500)
    10            ]
    11 #goodsname=['1',]
    12 #购物车列表
    13 shoplist=[]
    14 #购物统计
    15 shop_count=0
    16 #用户列表
    17 #user_shoplist=['用户名']
    18 while True:
    19     name_char=input("请输入工资(购物资金):")#用户输入工资(购物资金)
    20     if  name_char.isdigit():#检测输入是否为整数
    21         name_char=int(name_char)#转为int
    22         break
    23     else:
    24         print('金额不能为0或负数请正确输入金额!')
    25         continue
    26 while True:
    27     #for i in goodsname:
    28     for index,item in enumerate(goodsname):#取出下标输出
    29         print(index,item)
    30         #print(goodsname.index(i),i)
    31    # break
    32     user_index=input('请输入商品编号添加你所在购买的商品,按用33[31;1mq/Q33[0m退出>>>:')
    33     if user_index.isdigit():
    34         user_index=int(user_index)
    35         if user_index < len(goodsname) and user_index>=0:#判断所选商品编号在在列表
    36             p_item=goodsname[user_index]#读取下标所在(元素)商品
    37             if p_item[1]<=name_char:#余额是否足够
    38                 shoplist.append(p_item)#添加到购物车
    39                 name_char-=p_item[1]#扣除金额
    40                 shop_count+=p_item[1]#累加购物金额
    41                # print(type(name_char))
    42                 #print(shop_count)
    43                 print("添加 %s 到购物车,你的购物金额余 33[31;1m%s33[0m 元"% p_item,name_char)
    44             else:
    45                 print("你的购物金额余 33[41;1m%s33[0m 元,无法购买该商品" % name_char)
    46         else:
    47              print('输入错误,该编号 %s的商品不存在!',user_index)
    48     elif user_index=='q'or user_index=='Q':
    49         for up in shoplist:#打印购物清单
    50             print('你的购物清单:',up)
    51         print("你的购物总金额为:33[32;1m%s33[0m 元!"% shop_count)
    52         print("你的购物金额余: 33[31;1m%s33[0m 元!" % name_char)
    53         while True:
    54             confirm=input('你是否确定退出购物?Y/y是  N/n否:')
    55             if confirm== 'Y' or confirm== 'y':
    56                 exit(print("谢谢!欢迎您再次光临!"))
    57             elif confirm=='N'or confirm== 'n':
    58                 break
    59             else:
    60                 print("输入错误!请按提示输入!")
    61                 continue
    62     else:
    63         print('输入商品编号错误,请重新输入!')
    View Code
      1 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
      2 #
      3 #列表、元组操作
      4 #   ' '  在python里  ' ' 里的内容为 '字符串'  。不加 ' ' 为变量名
      5 #print()打印
      6 
      7 # 英文名字大全  http://ename.dict.cn/list/all/M
      8 
      9 names = ['Cahill','Teenglan','Eric','Peggie','Aalto','Baal','Sadie',
     10          'Gage','Hagan','Jack','Kaley','Mabel','Lacy','Nadine','Pace','Amy']
     11 
     12 #通过下标访问列表中的元素,下标从0开始计数
     13 print('---通过下标访问列表中的元素----')
     14 
     15 print(names[0])
     16 print(names[1],names[3],names[4])
     17 print(names[-1])
     18 print(names[-2])     #还可以倒着取
     19 print('                              ')
     20 
     21 print('---切片:取多个元素---')
     22 print(names[1:4])    #取下标1至下标4之间的数字,包括1,不包括4
     23 print(names[1:-1])   #取下标1至-1的值,不包括-1
     24 print('                              ')
     25 
     26 print('---切片:取下标1至-1的值,不包括-1---')
     27 print(names[0:3])    #取下标1至-1的值,不包括-1
     28 print(names[:3])     #如果是从头开始取,0可以忽略,跟上句效果一样
     29 print('                              ')
     30 
     31 print('---参数默认是0,-1就是倒数第1个----')
     32 print(names[:3])     #如果想取最后一个,必须不能写-1,只能这么写
     33 print(names[3:-1])   #这样-1(最后一个)就不会被包含了
     34 print('                              ')
     35 
     36 print('---参数默认是0----')
     37 print(names[0:5:2])    #后面的2是代表,每隔一个元素,就取一个,默认是1
     38 print(names[::3])      #参数默认是0,所以可以不写
     39 print('                              ')
     40 
     41 print('                              ')
     42 print('---追加names.append('')---每次只能追加一个')
     43 names.append('我是新来的',)
     44 print(names)
     45 print('                              ')
     46 
     47 
     48 print('                              ')
     49 print('---插入names.insert(下标号,名字)---每次只能插入一个')
     50 names.insert(3,'强行插队到下标位置3')
     51 print(names)
     52 print('                              ')
     53 
     54 print('                              ')
     55 print('---修改names[下标号]---')
     56 names[5] = '修改换人了'
     57 print(names)
     58 print('                              ')
     59 
     60 print('                              ')
     61 print('---删除names.remove('')---')
     62 print(names)
     63 names.remove('Eric')#删除指定元素名字
     64 print(names)
     65 print('                              ')
     66 
     67 print('---删除names.pop(下标号)---')
     68 print(names)
     69 names.pop(2)#删除指定列表中下标的值,默认-1
     70 print(names)
     71 print('                              ')
     72 
     73 print('                              ')
     74 print('---拷贝names.copy()---')
     75 print(names)
     76 name_copy = names.copy()
     77 print(name_copy)
     78 print('                              ')
     79 
     80 print('                              ')
     81 print('---排序names.sort()和翻转names.reverse()---')
     82 print('3.0里不同数据类型不能放在一起排序了')
     83 print(names)
     84 names.sort()
     85 print('                              ')
     86 print(names)
     87 names.reverse()
     88 print('                              ')
     89 print(names)
     90 
     91 print('                              ')
     92 print('---扩展names.extend(下标号)---')
     93 print('---数字默认为字符串""可以不加,但是数据类型却是整数--')
     94 print(names)
     95 b = ['3',9,'Amy','Amy','b的扩展']
     96 names.extend(b)
     97 print(names)
     98 print('                              ')
     99 
    100 
    101 print('                              ')
    102 print('---统计names.count(' ')---')
    103 print(names)
    104 cut = names.count('Amy')
    105 print('                              ')
    106 print(cut)
    107 print('                              ')
    108 
    109 
    110 print('                              ')
    111 print('---获取下标names.index(' ')---')
    112 print(names)
    113 idx = names.index('Amy')
    114 print('                              ')
    115 print(idx)
    116 print('                              ')
    列表的使用与测试
     1 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
     2 #元组
     3 #元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
     4 #它只有2个方法,一个是count,一个是index,完毕。
     5 
     6 #列表的写法
     7 name = ['Cahill','Teenglan','Eric','Amy','Amy','Amy','5','8']
     8 
     9 #元组的写法
    10 names = ('Cahill','Teenglan','Eric','Amy','Amy','Amy','Amy','Amy')
    11 
    12 print('                              ')
    13 print('---统计names.count(' ')---')
    14 print(names)
    15 cut = names.count('Amy')
    16 print('                              ')
    17 print(cut)
    18 print('                              ')
    19 
    20 
    21 print('                              ')
    22 print('---获取下标names.index(' ')---')
    23 print(names)
    24 idx = names.index('Amy')
    25 print('                              ')
    26 print(idx)
    27 print('                              ')
    28 
    29 #元组不能追加等操作,会报错。
    30 names.append('新加')
    元组的使用
      1 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎交流py
      2 
      3 #列表、元组操作浅copy(复制文件的快捷方式)和深copy(复制文件)
      4 
      5 #  names<变量名>  print()<打印>
      6 
      7 names = ['Cahill','Teenglan','Eric','Peggie','Aalto','Baal','Sadie',
      8          'Gage','Hagan','Jack','Kaley','Mabel','Lacy','Nadine','Pace','Amy']
      9 
     10 print('---原来列表的内容---')
     11 print(names)
     12 print('                              ')
     13 name2 = names.copy()
     14 
     15 print('---拷贝后列表的内容---')
     16 print(name2)
     17 print('                              ')
     18 
     19 print('---修改拷贝后列表里的内容---')
     20 names[2] =['修改了']
     21 print(names)
     22 print('                              ')
     23 print('---对比两个文件的内容---')
     24 print(name2)
     25 
     26 print('                              ')
     27 print('---列表打印-----------------------------------------------------')
     28 print('                              ')
     29 
     30 print('----跳跃打印不写默认值---- ')
     31 print(names[:])
     32 
     33 print('                              ')
     34 print('---跳跃打印---起始默认0:终止默认-1:跳跃默认1,默认值可以不写')
     35 print(names[1:-3:2])
     36 
     37 print('                              ')
     38 print('---列表循环打印---for i in names:--- ')
     39 print('                              ')
     40 for i in names:
     41     print (i)
     42 
     43 print('                              ')
     44 print('                              ')
     45 print('---新的实验浅pocy的用法----------------------------------------------------------------------------------------------------------------------------------------')
     46 print('                               ')
     47 print('---重新定义列表,在列表里添加列表---')
     48 name = ['Cahill','Peggie',['Ursula','Val',['Zena','Babb','Eric'],'Teenglan',],'Amy']
     49 
     50 print(name)
     51 print('                              ')
     52 
     53 print('                              ')
     54 name3 = name.copy()
     55 print('---拷贝后列表的内容---')
     56 print(name3)
     57 print('                              ')
     58 
     59 print('---修改拷贝后列表里的内容---')
     60 name[1] =['改第一层']
     61 name[2][1] =['第二层']
     62 name[2][2][0] =['列表里第三层']
     63 print(name)
     64 print('                              ')
     65 print('---对比两个文件的内容---')
     66 print(name3)
     67 print('                              ')
     68 
     69 print('浅pocy 只复制第一层内容,第二层开始只复制其快捷方式')
     70 print('                              ')
     71 
     72 print('                              ')
     73 print('---深copy的使用---copy.deepcopy(namett)------完全多层复制---尽量不用------------------')
     74 print('                              ')
     75 
     76 import copy
     77 namett = ['Cahill','Peggie',['Ursula','Val',['Zena','Babb','Eric'],'Teenglan',],'Amy']
     78 print('---重新定义列表---')
     79 print(namett)
     80 nameff = copy.deepcopy(namett)
     81 print('---拷贝后列表的内容---')
     82 print(nameff)
     83 print('                              ')
     84 
     85 print('                              ')
     86 print('---修改拷贝后列表里的内容---')
     87 namett[1] =['改第一层']
     88 namett[2][1] =['第二层']
     89 namett[2][2][0] =['列表里第三层']
     90 print(namett)
     91 print('---对比两个文件的内容---连第二第三层都没有跟着修改---')
     92 print(nameff)
     93 print('                              ')
     94 
     95 print('                              ')
     96 print('---深copy的使用---完全多层复制-------尽量不用----------------------------------')
     97 print('                              ')
     98 
     99 print('                              ')
    100 print('---新的实验-数值的pocy------------------------------------------------------------')
    101 print('数值的pocy---------------------------------------------------------')
    102 a = 1
    103 b = a
    104 print(a)
    105 print('                              ')
    106 print(b)
    107 print('                              ')
    108 
    109 print('重新定义a后的对比')
    110 a = 2
    111 print(a)
    112 print('                              ')
    113 print(b)
    114 print('                              ')
    115 
    116 print('                              ')
    117 print('                              ')
    118 print('---浅copy的用法-----------------------------------------------------------')
    119 print('                              ')
    120 #import<调用>   copy<函数拷贝模块>      list()<列表>     print()<打印>
    121 
    122 import copy
    123 person=['name',['saving',100]]
    124 
    125 p1=copy.copy(person)
    126 p2=person[:]
    127 p3=list(person)
    128       
    129 print(p1)
    130 print('                              ')      
    131 print(p2)
    132 print('                              ')
    133 print(p3)
    134 print('-----------------------------------------------------------------------------------')
    135 
    136 #
    137 #列表、元组操作
    浅copy(复制文件的快捷方式)和深copy(复制文件)

    浅copy歪解

    创建一个列表    等于图一

     names = [['Eric','Jack']'Alex','Cahill','Rain','Tenglan','Aalto','Toml',]

    浅copy    等于图二   浅pocy 只复制第一层内容,第二层开始只复制其快捷方式

    name3 = name.copy()

    图一

    图二

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【莫柔落切】!

    联系或打赏博主【莫柔落切】!https://home.cnblogs.com/u/uge3/

  • 相关阅读:
    排序链表
    给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。
    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
    快速排序之三路快排
    双向链表实现
    删除链表重复元素
    链表是否是回文串
    链表逆序
    排序之归并排序
    线性表之链表实现
  • 原文地址:https://www.cnblogs.com/uge3/p/6806414.html
Copyright © 2011-2022 走看看