• python学习笔记-(四)列表&元组


    1.列表及元组操作

    1.1 列表

    Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

    定义列表:

    1
    >>> namelist = ['cc','uu','tt','yy','nn']

    变量namelist就是一个list。用len()函数可以获得list元素的个数:

    1
    >>> print(len(namelist))

    1.1.1 list取值

    用索引来访问list中每一个位置的元素,记得索引是从0开始的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    print(namelist[0])
    cc
    >>> print(namelist[1])
    uu
    >>> print(namelist[2])
    tt
    >>> print(namelist[3])
    yy
    >>> print(namelist[4])
    nn

    当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(namelist) - 1

    如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:

    1
    2
    >>> print(namelist[-1])
    nn

    以此类推,可以获取倒数第二个、第三个:

    1
    2
    3
    4
    >>> print(namelist[-2])
    yy
    >>> print(namelist[-3])
    tt

    1.1.2 新增

    追加元素--append

    list是一个可变的有序表,可追加元素到末尾

    1
    2
    3
    >>> namelist = ['cc','tt','uu','yy']
    >>> namelist.append('ll')
    >>> print(namelist)
    >>print('cc','tt','uu','yy','11')

    添加到指定位置--insert

    1
    2
    >>> namelist.insert(1,'kk')
    >>> print(namelist)

    1.1.3 删除

    删除末尾元素--pop()

    1
    2
    >>> namelist.pop()
    >>> print(namelist)

    删除指定元素--pop(i)

    1
    2
    >>> namelist.pop()
    >>> print(namelist)

    删除列表

    del(list)是直接删除整个列表,再次打印列表时会报:NameError: name 'namelist' is not defined

    1
    2
    >>> del(namelist)
    >>> print(namelist)

    删除指定元素--del

    1
    2
    >>> del(namelist[0])
    >>> print(namelist)  

    删除指定元素--remove

    1
    2
    >>> remove.namelist('cc')
    >>> print(namelist)

    1.1.4 修改

    要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

    1
    2
    >>> namelist[1= 'rr'
    >>> print(namelist)

    1.1.5 切片

    取多个元素就需要用到切片; 

    切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。记住:数是可选的,而冒号是必须的。

    切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置开始 ,刚好在结束位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。----顾头不顾尾

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> namelist = ['cc','tt','uu','yy']
    >>> print(namelist[1:3])#取下标1到3之间的值,包含1,不包含3
    ['tt''uu']
    >>> print(namelist[0:3])#取下标0到3之间的值,包含0,不包含3
    ['cc','tt','uu']
    >>> print(namelist[:3])#如果是0开头,可以省略0,同上句
    ['cc','tt','uu']
    >>> print(namelist[0:])#想取最后一个,只能这么写
    ['cc','tt','uu','yy']
    >>> print(namelist[::2])#从头取到尾,每隔一个元素就取一个
    ['cc''uu']

    也可以用负数做切片,负数用在从序列尾开始计算的位置

    1
    2
    >>> print(namelist[0:-3])
    ['cc']

    1.1.6 获取下标

    可通过index查找元素,返回下标

    1
    2
    >>> print(namelist.index('cc'))
    0

    也可通过找到的下标获取元素值---忘记他吧!

    1
    2
    >>> print(namelist[namelist.index('cc')])
    cc

     1.1.7 统计

    1
    2
    3
    >>> namelist = ['ty','tuu','tu','ye','tu']
    >>> print(namelist.count('tu'))
    2

     1.1.8 反转

    1
    2
    3
    4
    >>> namelist = ['ty','tuu','tu','ye']
    >>> namelist.reverse()
    >>> print(namelist)
    ['ye''tu''tuu''ty']

    1.1.9 排序

    按照ascii码表排序

    1
    2
    3
    4
    >>> namelist = ['ty','tuu','tu','ye']
    >>> namelist.sort()
    >>> print(namelist)
    ['tu''tuu''ty''ye']

    1.1.10 扩展

    extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

    1
    2
    3
    4
    5
    >>> namelist1 = ['cc','tt','yy','uu']
    >>> namelist2 = ['ww','ee','bb']
    >>> namelist1.extend(namelist2)
    >>> print(namelist1)
    ['cc''tt''yy''uu''ww''ee''bb']

    2.元组

    Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

    2.1 创建元组

    1
    2
    3
    >>> names = ('cc','uu','jack')
    >>> print(names)
    ('cc''uu''jack')

    创建空元组:

    1
    >>> names1 = ()

    元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义:

    1
    2
    3
    4
    5
    6
    7
    >>> names2 = (50)#定义的不是元组,是50这个数!这是因为括号()既可以表示元组,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
    >>> print(names2)
    50
     
    >>> names3 =(50,)
    >>> print(names3)
    (50,)

    2.2 访问元组

    元组也可以使用下标索引来访问元组中的值

    1
    2
    3
    >>> names = ('cc','nn','mack')
    >>> print(names[1])
    nn<br>>>> print(names[-1])<br>mack<br>>>> print(names[:2])<br>('cc''nn')

    2.3 修改元组

    元组中的元素值是不允许修改的,但我们可以对元组进行连接组合:

    1
    2
    3
    4
    5
    >>> name1 = ('cc','nn')
    >>> name2 = ('yy','uu')
    >>> name3 = name1 + name2
    >>> print(name3)
    ('cc''nn''yy''uu')<br><br>以下操作会报错,TypeError: 'tuple' object does not support item assignment<br>>>> name1[0= 'tt'<br>>>> print(name1)

    2.4 删除元组

    元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组:

    1
    2
    3
    4
    >>> name = ('cc')
    >>> del name
    >>> print(name)
    元组name已被删除,会报错,NameError: name 'name1' is not defined

    2.5 “可变”的元组

    1
    2
    3
    4
    >>> name = ('cc','nn',['tt','yy'])
    >>> name[2][0= 'uu'
    >>> name[2][1= 'ii'
    >>> print(name)

    元组的每个元素,指向永远不变.指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

    2.6 打印下标

    1
    2
    3
    4
    5
    >>> name = ('cc','nn')
    >>> print(name.index('cc'))
    0
    >>> print(name.index('nn'))
    1

    2.7 统计

    1
    2
    3
    >>> name = ('cc','nn','nn')
    >>> print(name.count('nn'))
    2

    3.练习  

    程序:购物车程序 

    需求:

    1. 启动程序后,让用户输入工资,然后打印商品列表
    2. 允许用户根据商品编号购买商品
    3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
    4. 可随时退出,退出时,打印已购买商品和余额

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    shopping_code = []
    product_list =[
        ('iphone',8000),
        ('bike',800),
        ('car',20000),
        ('coff',30),
    ]
    salary = input("请输入您的工资:")
    if salary.isdigit():
        salary = int(salary)
        while True:
            for index,item in enumerate(product_list):
                print(index,item)
            user_choice = input("请输入您要购买的商品编号:")
            if user_choice.isdigit():
                user_choice = int(user_choice)
                if user_choice < len(product_list) and user_choice >=0:
                    p_item = product_list[user_choice]
                    if p_item[1] < salary:
                        shopping_code.append(p_item)
                        salary -= p_item[1]
                        print("商品%s已被添加到购物车"% p_item[0])
                        print("剩余余额33[31;1m%s33[0m"% salary)
                    else:
                        print("您的余额只剩33[31;1m%s33[0m啦!买不了啊,哥!"% salary)
                        print("----购物车商品----")
                        for in shopping_code:
                            print(p)
                        break
                else:
                    print("您选择的商品%s不存在!请重新输入!" % user_choice)
            elif user_choice == 'q':
                    print("----购物车商品----")
                    for in shopping_code:
                        print(p)
                    print("您剩余余额是:%s" % salary)
                    break
            else:
                print("商品编号不正确,请重新输入!")
    else:
        print("工资输入错误,即将退出。。。。")
  • 相关阅读:
    火狐浏览器处理jquery中:header的问题。
    兼容IE与FF的childNodes问题(ff childNodes)
    前端开发的几个辅助类工具
    固定 vs. 流动 vs. 弹性:哪种布局更适合你?
    由浅入深漫谈margin属性
    Firefox 的 Jetpack 扩展案例分析:Gmail 邮件提醒
    jQuery性能优化
    浅谈.NET中可用的定时器和计时器【上篇】
    现有分布式技术(socket、.net remoting、asp.net webservice、WSE、ES)和wcf的比较及优势
    Mono for Android 4.2初探
  • 原文地址:https://www.cnblogs.com/wangsen-123/p/5730739.html
Copyright © 2020-2023  润新知