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‘]

追加

1 >>> names
2 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
3 >>> names.append("我是新来的")
4 >>> names
5 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]

插入

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‘, ‘我是新来的‘]

修改

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

删除

 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‘]

扩展

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]

拷贝

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]

统计

1 >>> names
2 [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
3 >>> names.count("Amy")
4 2

排序&翻转

 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‘]

获取下标

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

案例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)

【元组】

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

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

【字典】

时间: 2024-11-08 19:10:18

Python_oldboy_自动化运维之路(三)的相关文章

Python_oldboy_自动化运维之路_socket编程(十)

链接:http://www.cnblogs.com/linhaifeng/articles/6129246.html 1.osi七层 引子: 须知一个完整的计算机系统是由硬件.操作系统.应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的) 如果你要跟别人一起玩,那你就需要上网了(访问个黄色网站,发个黄色微博啥的),互联网的核心就是由一堆协议组成,协议就是标准,全世界人通信的标准是英语,如果把计算机比作人,互联网协议就是计算机界的英语.所有的计算机都

Python_oldboy_自动化运维之路(二)

循环: [for循环] 1 for i in range(5): 2 print ("look", i) 1. 输入密码场景,判断用户名和密码都输入成功,则显示登陆成功,用户名是xiaoyu则不让登陆 1 user = "chenlijun" 2 passwd = "lijun" 3 newuser = input("name:") 4 newpasswd = input("passwd:") 5 if u

Python_oldboy_自动化运维之路_线程,进程,协程(十一)

本节内容: 线程 进程 协程 IO多路复用 自定义异步非阻塞的框架 线程和进程的介绍: 举个例子,拿甄嬛传举列线程和进程的关系: 总结:1.工作最小单元是线程,进程说白了就是提供资源的 2.一个应用程序至少有一个进程,一个进程里至少有一个线程 3.应用场景:io密集型适合用多线程,计算密集型(cpu)适合用多进程 4.GIL:全局解释器锁,作用:保证同一个进程中只能有一个线程同时被调用 5.python的一个诟病:前提是被cpu调度,因为有GIL,一个应用只有一个进程,纵容有多个线程,也体现不出

Python_oldboy_自动化运维之路_paramiko,mysql(十二)

本节内容: paramiko mysql 1.paramiko http://www.cnblogs.com/wupeiqi/articles/5095821.html paramiko是一个模块,socket和ssh协议,利用这个模块就可以用python代码实现远程服务器操作 ansible底层就是用的这个模块 功能: a.使用用户名密码:命令,文件 b.使用用户名秘钥:命令,文件 c.执行创建session 1.基于用户名密码连接: import paramiko # 创建SSH对象 ssh

Python_oldboy_自动化运维之路_面向对象2(十)

本节内容: 面向对象程序设计的由来 什么是面向对象的程序设计及为什么要有它 类和对象 继承与派生 多的态与多态性 封装 静态方法和类方法 面向对象的软件开发 1.面向对象程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 2.什么是面向对象的程序设计及为什么要有它 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程

Python_oldboy_自动化运维之路(一)

python简介: Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. python特点: 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单. 2.易于阅读:Python代码定义的更清晰. 3.易于维护:Python的成功在于它的源代码是相当容易维护的. 4.一个广泛的标准库:Python的最大

python自动化运维之路~DAY7

python自动化运维之路~DAY7 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.客户端/服务器架构 C/S 架构是一种典型的两层架构,其全称是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信. C/S 架构也可以看做是胖客户端架构.因为客户端需要实现绝大多数的业务

python自动化运维之路~DAY10

python自动化运维之路~DAY10 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

自动化运维工具(三)之( 时实监控)

话说运维监控,出口就是nagios.cacti.zabbix.Ganglia.Graphite 等,还有自已公司开发的,但采集轮询时间一般为 5分钟,1分钟 ,最少的也没30秒内的,但如果服务器异常,要时实查看,不得不开多个终端,一边处理分析,一边查看. 自动化运维工具,时实查看,5秒刷新一次并出图.可放心的去处理,并时实知道服务器的运行情况.