Python学习之路 – 列表

发布于 2021-01-25  92 次阅读


切片—取多个元素

names = ['Tom','Jack','Sir','Kit','Alex','Helen']
print(names[0:2]) #取下标0到下标2之间的数据,包头不包尾
['Tom', 'Jack']
print(names[1:-1]) #取下标1到-1的值,不包括-1
['Jack', 'Sir', 'Kit', 'Alex']
print(names[:3]) #从头开始取,0可以不写
['Tom', 'Jack', 'Sir']
print(names[2:])
['Sir', 'Kit', 'Alex', 'Helen']

追加

names.append("追加的内容")
print(names)
['Tom', 'Jack', 'Sir', 'Kit', 'Alex', 'Helen', '追加的内容']

插入

names.insert(2,"从Sir前插入")
print(names)
['Tom', 'Jack', '从Sir前插入', 'Sir', 'Kit', 'Alex', 'Helen', '追加的内容']

修改

names[2] = "换人了"
print(names)
['Tom', 'Jack', '换人了', 'Sir', 'Kit', 'Alex', 'Helen', '追加的内容']

删除

del names[2]
print(names)
['Tom', 'Jack', 'Sir', 'Kit', 'Alex', 'Helen', '追加的内容']

names.remove("Sir") #删除指定元素
print(names)
['Tom', 'Jack', 'Kit', 'Alex', 'Helen', '追加的内容']

names.pop() #删除最后一个数据
print(names)
['Tom', 'Jack', 'Kit', 'Alex', 'Helen']

扩展

b = {1,2,3}
names.extend(b)
print(names)
['Tom', 'Jack', 'Kit', 'Alex', 'Helen', 1, 2, 3]

复制

names_copy = names.copy()
print(names_copy)
['Tom', 'Jack', 'Kit', 'Alex', 'Helen', 1, 2, 3]

统计

names.append("Helen")
print(names)
['Tom', 'Jack', 'Kit', 'Alex', 'Helen', 1, 2, 3, 'Helen']

print(names.count("Helen"))
2

排序&翻转

print(names.sort()) #排序
TypeError: '<' not supported between instances of 'int' and 'str'
#py3 里不同数据类型不能放在一起排序

names[-4] = '1'
names[-3] = '2'
names[-2] = '3'
names[-1] = '4'
print(names)
['Tom', 'Jack', 'Kit', 'Alex', 'Helen', '1', '2', '3', '4']
names.sort() #排序
print(names)
['1', '2', '3', '4', 'Alex', 'Helen', 'Jack', 'Kit', 'Tom']

names.reverse() #翻转
print(names)
['Tom', 'Kit', 'Jack', 'Helen', 'Alex', '4', '3', '2', '1']


获取下标

print(names)
['Tom', 'Kit', 'Jack', 'Helen', 'Alex', '4', '3', '2', '1']
print(names.index("Helen"))
3

程序练习:

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
Articles = [("IPhone",5800),
            ("Mac Pro",120000),
            ("Starbuck Latte",31)
            ,("Bike",800)]  #商品列表
shopping_list = []  #已经购买的商品列表

Wages = input("请输入你的工资:")
if Wages.isdigit():   #判断输入的是否为数字
    Wages = int(Wages)  #若为数字 强制转换为int整型
    while True:
        for index,i in enumerate(Articles):  #遍历列表,并获取下标
            #print(Articles.index(i+1),i) 
            print(index+1,i)  #两种方式都可以 输出商品列表(带编号的)
        number = input("选择要买的商品>>>:")
        if number.isdigit():
            number = int(number)
            if number < len(Articles)+1 and number > 0:
                item = Articles[number-1] #查找下标
                if item[1] <= Wages: #买的起
                    shopping_list.append(item)
                    Wages = Wages-item[1]
                    print("Added %s into shopping cart,you balance is \033[31;1m%s\033[0m"%(item,Wages))
                else:
                    print("你还剩\033[31;1m%s\033[0m啦,买不起了"%Wages)
            else:
                print("商品%s不存在"%number)
        elif number == 'q':
            print("--------shopping list-------")
            for p in shopping_list:
                print(p)
            print("你的的余额还剩",Wages)
            exit()
        else:
            print("invalid option")

生之逢时,为之奋斗。