一、列表

列表和字典是最常用的两种数据类型

1. 需求:怎么存放班级80多人的姓名,如何实现?

names = ["Zhangyang","Guyun","Xiangpeng","Xuliangchen"]
print(names[0],names[2]) #取出 Zhangyang Xiangpeng
print(names[2:4]) #切片,取出"Xiangpeng","Xuliangchen"并输出
print(names[0:4]) #切片,取出"Zhangyang","Guyun","Xiangpeng","Xuliangchen"]
print(names[-1]) #切片,负数指从后往前
print(names[-2:]) #取最后2个值

注意:前后的0可以省略

2. 举例说明列表的各种操作

names = "ZhangYang Guyun Xiangpeng XuLiangChen" #以此列表为例

增加:

names.append("Leihaidong") #在列表最后增加

插入:

names.insert(1,"Chenronghua") #位置1,插入数据
names.insert(3,"Xinzhiyu") #位置3,插入数据

修改:

names[2] = "Xiedi" #下标位置2,替换成"Xiedi"

删除:(三种方式)

names.remove("Chenronghua") #删除列表中指定数据
del names[1] #删除下标位置1的数据
names.pop() #不加下标,删除最后一个数据;加下标,和del效果相同

拷贝:

(1)

names = ["Zhangyang","Guyun","Xiangpeng","Xuliangchen"]
names2 = names.copy()
names[2] = "向鹏"
print(names)
print(names2)

(2)

a.

names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"]
names2 = names.copy() #浅copy,只拷贝第一层
names[2] = "向鹏"
names[3][0] = "ALEX"
print(names)
print(names2)

查看输出结果,names2中,Xiangpeng没有改,子列表中的数据都被修改。因为子列表中的数据只是一个内存地址,copy的时候只copy内存地址

b.浅copy,浅copy的用途:创建联合账号

import copy
names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"]
names2 = copy.copy(names)
print(names)
print(names2)
names[2] = "向鹏"
names[3][0] = "ALEX"
print(names)
print(names2)

(3)深copy

import copy
names = ["Zhangyang","Guyun","Xiangpeng",["alex","jack"],"Xuliangchen"]
names2 = copy.deepcopy(names)
print(names)
print(names2)
names[2] = "向鹏"
names[3][0] = "ALEX"
print(names)
print(names2)

此时,names和names2将会成为独立的两份数据

列表循环:

for i in names:
print(i)

列表切片:

print(names[0:-1:2])
print(name[::2])

上面两条命令效果相同,间隔输出列表中数据。列表操作中的0和-1可以省略。

二、元组

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

语法:

names = ('alex','jack')

元组只有2个方法,一个是count,一个是index

三、程序练习

程序:购物车程序

需求:

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

代码如下:

shopping_list = [] #已购买的商品列表,预先定义空列表
salary = input("please input your saraly:") # 启动程序后,让用户输入工资
product_list = [
('iphone',5800),
('bike',800),
('coffee',31),
('Macbook Pro',12000),
('alex python',81),
('a',120)
] if salary.isdigit():
salary = int(salary)
while True:
for index,item in enumerate(product_list): #从商品列表中取数据和下标
# print(product_list.index(item),item)
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_list.append(p_item)
salary -= p_item[1]
print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m" %(p_item,salary))
else:
print("\033[41;1m你的余额只剩[%s]啦,买不起此商品\033[0m" %salary)
else:
print("product code [%s] is not exist!!!" %user_choice)
elif user_choice == 'q':
print("--------- shopping list ---------")
for p in shopping_list:
print(p)
print("Your current balance:",salary)
exit()
else:
print("invalid option")

python学习笔记(列表、元组、购物车实例)的更多相关文章

  1. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...

  2. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  3. Python学习笔记----列表、元组和字典的基础操作

    文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...

  4. python学习笔记整理——元组tuple

    Python 文档学习笔记2 数据结构--元组和序列 元组 元组在输出时总是有括号的 元组输入时可能没有括号 元组是不可变的 通过分拆(参阅本节后面的内容)或索引访问(如果是namedtuples,甚 ...

  5. python学习笔记——列表生成式与生成器

    1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...

  6. python学习笔记3(元组、字典)

    Python中有三种内置的数据类型.dictionary(字典).List(列表)和tuple(元组). 元组(tuple) 只读列表(列表的值可以修改,元组的不可以) 元组与列表类似,不同之处在于元 ...

  7. PYTHON 学习笔记3 元组、集合、字典

    前言 在上一节的学习中.学习了基本的流程控制语句,if-elif-else for while 等,本节将拓展上一节学习过的一些List 列表当中操作的一些基本方法,以及元祖.序列等. 列表扩展 我们 ...

  8. Python学习笔记3-Python元组、数组、字典集合的操作

    在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...

  9. Python学习笔记——列表

    1.创建列表类型数据并给其赋值 >>> aList = [123,'abc',4.56,['inner','list'],7-9j] >>> aList [123, ...

  10. python学习笔记——列表操作

    python列表操作——增 append:追加一条数据到列表的最后 name = ["Zhangsan","XiongDa","Lisi"] ...

随机推荐

  1. Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V

    在学习CGlib动态代理时,遇到如下错误: Exception in thread "main" java.lang.NoSuchMethodError: org.objectwe ...

  2. Android中使用ViewFlipper实现屏幕页面切换(关于坐标轴的问题已补充更改)

    屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.如 ...

  3. Android local.properties 文件读取

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6202369.html 本文出自[赵彦军的博客] 在Android Studio项目里面有个local.pro ...

  4. 如何开发FineReport的自定义控件?

    FineReport作为插件化开发的报表软件,有些特殊需求的功能需要自己开发,开发的插件包帆软官方有提提供,可以去帆软论坛上找,本文将主要介绍如何开发一个自定义控件,这里讲讲方法论. 第一步:实例化一 ...

  5. 最小生成树(Kruskal算法-边集数组)

    以此图为例: package com.datastruct; import java.util.Scanner; public class TestKruskal { private static c ...

  6. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

  7. 前端工程师手中的Sublime Text

    原文地址:http://css-tricks.com/sublime-text-front-end-developers/ 我的Blog:http://cabbit.me/sublime-text-f ...

  8. 电容与EMC-电容不同功能时对整板EMC的作用

    一般我们的pcb板的器件有很多种类,但是值得特别关注的,很多人都会说是BGA.接口.IC.晶振之类,因为这些都是layout功能模块以及设计难点.然而数量上占绝对优势的器件却是阻容器件,之前围殴阻抗时 ...

  9. webSocket and LKDBHelper的使用说明

    socketket与lkdbhelper来处理数据 客户需求: 当我们有需要从自己的后台推送消息给我们的用户时,用户需要实时的接收到来自我们的推送消息.前提是没有使用第三方的推送框架,那么这个使用we ...

  10. ORA-12154:TNS:无法解析指定的连接标识符

    问题:ORA-12154:TNS:无法解析指定的连接标识符 原因:没有配置tnsnames.ora文件 解决方案: 配置环境变量变量名:ORACLE_HOME 变量值:如:D:\Database\pr ...