首页 > 代码库 > Python_oldboy_自动化运维之路(三)

Python_oldboy_自动化运维之路(三)

本节内容

  1. 列表,元组,字典

1.列表,元组,字典

【列表】

1.定义列表

1 names = [Alex,"Tenglan",Eric]

2.通过下标访问列表中的元素,下标从0开始计数

1 >>> names[0]
2 Alex
3 >>> names[2]
4 Eric
5 >>> names[-1]
6 Eric
7 >>> names[-2] #还可以倒着取
8 Tenglan

切片:取多个元素

技术分享
 1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
 2 >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
 3 [Tenglan, Eric, Rain]
 4 >>> names[1:-1] #取下标1至-1的值,不包括-1
 5 [Tenglan, Eric, Rain, Tom]
 6 >>> names[0:3] 
 7 [Alex, Tenglan, Eric]
 8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
 9 [Alex, Tenglan, Eric]
10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
11 [Rain, Tom, Amy] 
12 >>> names[3:-1] #这样-1就不会被包含了
13 [Rain, Tom]
14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
15 [Alex, Eric, Tom] 
16 >>> names[::2] #和上句效果一样
17 [Alex, Eric, Tom]
View Code

追加

技术分享
1 >>> names
2 [Alex, Tenglan, Eric, Rain, Tom, Amy]
3 >>> names.append("我是新来的")
4 >>> names
5 [Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
View Code

插入

技术分享
1 >>> names
2 [Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
3 >>> names.insert(2,"强行从Eric前面插入")
4 >>> names
5 [Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, Tom, Amy, 我是新来的]
6 
7 >>> names.insert(5,"从eric后面插入试试新姿势")
8 >>> names
9 [Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
View Code

修改

技术分享
1 >>> names
2 [Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
3 >>> names[2] = "该换人了"
4 >>> names
5 [Alex, Tenglan, 该换人了, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
View Code

删除

技术分享
 1 >>> del names[2] 
 2 >>> names
 3 [Alex, Tenglan, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
 4 >>> del names[4]
 5 >>> names
 6 [Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
 7 >>> 
 8 >>> names.remove("Eric") #删除指定元素
 9 >>> names
10 [Alex, Tenglan, Rain, Tom, Amy, 我是新来的]
11 >>> names.pop() #删除列表最后一个值 
12 我是新来的
13 >>> names
14 [Alex, Tenglan, Rain, Tom, Amy]
View Code

扩展

技术分享
1 >>> names
2 [Alex, Tenglan, Rain, Tom, Amy]
3 >>> b = [1,2,3]
4 >>> names.extend(b)
5 >>> names
6 [Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]
View Code

拷贝

技术分享
1 >>> names
2 [Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]
3 
4 >>> name_copy = names.copy()
5 >>> name_copy
6 [Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]
View Code

统计

技术分享
1 >>> names
2 [Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]
3 >>> names.count("Amy")
4 2
View Code

排序&翻转

技术分享
 1 >>> names
 2 [Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]
 3 >>> names.sort() #排序
 4 Traceback (most recent call last):
 5   File "<stdin>", line 1, in <module>
 6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
 7 >>> names[-3] = 1
 8 >>> names[-2] = 2
 9 >>> names[-1] = 3
10 >>> names
11 [Alex, Amy, Amy, Tenglan, Tom, 1, 2, 3]
12 >>> names.sort()
13 >>> names
14 [1, 2, 3, Alex, Amy, Amy, Tenglan, Tom]
15 
16 >>> names.reverse() #反转
17 >>> names
18 [Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]
View Code

获取下标

技术分享
1 >>> names
2 [Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]
3 >>> names.index("Amy")
4 2 #只返回找到的第一个下标
View Code

案例1:如何删除列表重复的第二个值,默认只会删除第一个。

技术分享
 1 #删除重复第二个b
 2 names=["a","b","c","d","b"]
 3 print(names)
 4 
 5 first=names.index("b")
 6 print(first)
 7 
 8 print(names[first:])
 9 print(names[first+1:])
10 
11 second=names[first+1:].index("b")
12 print(second)
13 
14 del names[first+second+1]
15 print(names)
View Code

 

【元组】

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

1 names = ("alex","jack","eric")

它只有2个方法,一个是count,一个是index,完毕。

 

案例1:如何在列表中添加索引。

1 for i,v in enumerate(range(3,10)):
2     print(i,v)
0 3
1 4
2 5
3 6
4 7
5 8
6 9

Process finished with exit code 0

案例2:程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 #blog:http://www.cnblogs.com/linux-chenyang/
 4 #
 5 #----------------readme-------------------------
 6 #1.启动程序后输入你的工资,然后打印商品列表。
 7 #2.如果选择的是列表内的商品,则进行下一步,否则提示没有这个商品。
 8 #3.如果选择的商品小于工资,则显示余额,大于工资则显示还差多少钱。
 9 #4.选择exit退出并且显示消费的钱和余额。
10 
11 product_list = [
12     ["Iphone7",6500],
13     ["MackBook",12000],
14     ["Python book",60],
15     ["Bike",300],
16     ["coffee",30],
17 ]
18 shoppint_cart = []
19 
20 salary = int(input("Please youer salary:"))
21 while True:
22     for index,i in enumerate(product_list):
23         print("%s.\t%s\t%s" %(index,i[0],i[1]))                      #\t表示空格。
24     choice = input(">>:").strip()                               #strip()表示去除空格。
25     if choice.isdigit():                                     #isdigit()检测字符串是否只由数字组成。
26         choice = int(choice)
27         if choice < len(product_list) and choice >=0:
28             product_item = product_list[choice]                      #选择的商品
29             if salary >= product_item[1]:
30                 salary -= product_item[1]                          #剩余的钱
31                 shoppint_cart.append(product_item)                      #添加至购物车
32 
33                 print("%s已经加入到你的购物车,余额还剩%s" %(product_item[0],salary))
34             else:
35                 print("对不起你的余额不足,还差",product_item[1]-salary)          #商品价格减去剩余的钱就少还差多少钱
36         else:
37             print("没有这个商品!")
38 
39     elif choice == "exit":
40         total_cost = 0
41         print("你已经添加到购物车的东西是:")
42         for i in shoppint_cart:
43             print(i)
44             total_cost += i[1]                                 #循环加购物车里的钱
45         print("您总共消费为",total_cost )
46         print("您的余额是", salary)
47         break
48 
49     else:
50         print("非法的输入,请选择商品序号或者退出exit")
Please youer salary:5000
0.    Iphone7    6500
1.    MackBook    12000
2.    Python book    60
3.    Bike    300
4.    coffee    30
>>:2
Python book已经加入到你的购物车,余额还剩4940
0.    Iphone7    6500
1.    MackBook    12000
2.    Python book    60
3.    Bike    300
4.    coffee    30
>>:3
Bike已经加入到你的购物车,余额还剩4640
0.    Iphone7    6500
1.    MackBook    12000
2.    Python book    60
3.    Bike    300
4.    coffee    30
>>:4
coffee已经加入到你的购物车,余额还剩4610
0.    Iphone7    6500
1.    MackBook    12000
2.    Python book    60
3.    Bike    300
4.    coffee    30
>>:3
Bike已经加入到你的购物车,余额还剩4310
0.    Iphone7    6500
1.    MackBook    12000
2.    Python book    60
3.    Bike    300
4.    coffee    30
>>:exit
你已经添加到购物车的东西是:
[Python book, 60]
[Bike, 300]
[coffee, 30]
[Bike, 300]
您总共消费为 690
您的余额是 4310

Process finished with exit code 0

【字典】

 

Python_oldboy_自动化运维之路(三)