python---基础之模块,列表,元组,字典
1、 模块
写模块的时候尽量不要和系统自带的模块的名字相同
调用模块的时候,会先在当前目录下查找是否有这个模块,然后再会如python的环境变量中查找
a.模块1:sys
代码如下:
- import sys
- print(sys.path)
该代码的作用就是打印出python环境变量如下所示:
D:\\python培训\\s14\\day2
D:\\python培训\\s14
D:\\python35\\python35.zip
D:\\python35\\DLLs
D:\\python35\\lib
D:\\python35
D:\\python35\\lib\\site-packages 第三方库会放在这里
print(sys.argv) #打印当前文件的相对路径,但是在pycharm中打印的是绝对路径 打印结果如下所示:
['D:/python培训/s14/day2/sys_mod.py']
b. 模块2:os
代码如下:
- import os
- cmd = os.system("dir") #执行命令,不保存结果
- cmd_res = os.popen("dir").read() #执行命令,保存结果
- print("--->",cmd_res)
- os.mkdir("new_dir") #创建目录
2、数据类型:
数字:整型(int) float(浮点型),无论多大在3.0python中都是int 即3.0没有长整型这个概念
布尔值:真或假 1或0
字符串
关于字符串的操作例子:
- name="zhaofan"
- print(name.capitalize()) #将字符串首字母大写
- print(name.count("a")) #查找字符串中a的个数
- print(name.center(50,"-")) #显示结果如下:
- ---------------------zhaofan----------------------
- print(name.endswith("an")) #判断字符串的结尾是否为an
- print("My name is zhaofan".find("name")) #返回字符串的索引
- print(name.isalnum()) #如果字符串中包括文字和数字的都返回true
- print("zhaofan".isalpha()) #如果字符串中都为字母则返回true
- print("".isdigit()) #判断字符串中是否都为数字
- print("ZZZZ".islower()) #判断字符串是否为小写
- name.strip() 去掉前和后面的空格
- name.lstrip()去掉左边的空格
- name.rstrip()去掉右边的空格
- name.replace() 替换
- name.rfind(“字符”) 查找字符串中最右边的那个字符的下标
- name.split() 分割字符串,默认是以空格分割
python3中的不等于只能用!= 取消了2.0中的<>
3、列表
列表的特点:列表是有序的,列表可以有重复的值
list[数字] 就可以取出列表中相对应的值
关于列表切片:
list[1:2]从第二个位置开始取,包括其实位置,但是不包含结尾,即取出列表的第二个值list[1],list[1:3]就可以取出第2个和第3个值
list[-1] 取出列表的最后一个值
list[-2]取出列表倒数两个值
list[:3]取出列表的前两个值
列表的增加
list.append(“元素名”) 给列表的最后追加一个元素
列表的插入
list.insert(1,“元素名”)在列表的第一个第2个位置插入一个元素
列表的修改
name[2]=”新的元素名” 将列表的第3个元素进行更改
列表的删除
name.remove(“元素名”)删除列表中对应的元素
del names[1] 删除列表中相应的元素
name.pop()如果没有输出下标则删除列表中的最后一个值,如果删除数字下标就可以删除相对应的元素
查找列表中某个元素的位置,即下标
name.index(“元素名”)
name.clear() 情况列表
name.count(“元素名”) 找出列表的某个元素的个数
name.reverse() 将列表中元素进行反转
name.sort()将列表元素进行排序
name.extend(names2) 将name2并入到name列表中
del name2 就可以删除name2列表
4、关于列表的深浅拷贝
首先浅拷贝
name.copy() 就是浅拷贝
下面是关于浅拷贝的代码例子:
- names = ["ZhaFan","Dean",[1,2,3,4],"Dean","Dan","jack","Yes","A","a"]
- names2 = names.copy()
- print(names)
- print(names2)
- names2[1]="zhaofan"
- print(names)
- print(names2)
- names[2][0]=100
- print(names)
- print(names2)
上述代码的的运行结果如下:
D:\python35\python.exe D:/python培训/s14/day2/copy_qian.py
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'zhaofan', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [100, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'zhaofan', [100, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
总结:从上述结果可以看出,names.copy()复制出一个与names列表一样的列表当修改列表中的内容时,
如果列表中嵌套有列表,那么如果修改是列表的第一层,那么只会更改修改的那个列表,如果修改的是嵌套里的列表的内容,则两个列表的内容的都会更改
如下图:
下面是关于深拷贝
深拷贝需要借助模块copy
深拷贝的时候,就是完全都开辟出另外一个内存空间,及修改其中一个列表中任意一个值,另外一个列表都不会发生变化:
代码例子如下:
- import copy
- names = ["ZhaFan","Dean",[1,2,3,4],"Dean","Dan","jack","Yes","A","a"]
- names2 = copy.deepcopy(names)
- print(names)
- print(names2)
- names[2][1]=10000
- print(names)
- print(names2)
运行结果如下:
D:\python35\python.exe D:/python培训/s14/day2/copy_deep.py
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 10000, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
从代码可以看出,修改一起种一个列表中的内容,另外一个并不会发生变化
列表中打印每个元素
for I in names:
print I
5、元组tuple
元组就是不可变的列表,即tuple一旦被初始化就不能修改,所以tuple不能用类似于list列表中的append(),insert()等这些修改的方法
关于元组的代码例子如下:
- tt_tuple = ("zhaofan","dean","jack")
- print(tt_tuple.count("dean"))
- print(tt_tuple.index("jack"))
- print(tt_tuple[-1])
运行结果如下:
D:\python35\python.exe D:/python培训/s14/day2/tuple_ex.py
1
2
jack
7、关于用list列表编写一个简单的购物车的例子:
程序要求:
a. 启动程序后,让用户输入工资,然后打印商品列表
b. 允许用户根据商品编号购买商品
c. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提示用户
d. 可以随时退出,退出时,打印已经购买的商品和余额
- goods_list=[["Iphone",5288],["Bike",1200],["Coffee",20],["Ipad",1800]]
- shopping_list=[]
- user_salary = input("请输入你的工资是:")
- if user_salary.isdigit() is True:
- user_salary = int(user_salary)
- while True:
- for key,iterm in enumerate(goods_list):
- print(key,iterm[0],iterm[1])
- user_choice = input("你想要买什么(输入商品的序号,q表示退出系统):")
- if user_choice.isdigit() is True:
- user_choice=int(user_choice)
- if user_choice > len(goods_list):
- print("\033[31;1m你输入的商品编号不存在\033[0m")
- continue
- if goods_list[user_choice][1] < user_salary and user_choice > 0:
- shopping_list.append(goods_list[user_choice])
- user_salary -= goods_list[user_choice][1]
- print("\033[31;1m%s\033[0m 已经被添加到购物车,你的钱还剩余\033[31;1m%s\033[0m" %(goods_list[user_choice][0],user_salary))
- continue
- else:
- print("\033[31;1m你没有足够的钱了,你只剩下%s人民币了\033[0m" %user_salary)
- if user_choice == "q":
- print("你的购物车".center(50,"-"))
- for key,iterm in enumerate(shopping_list):
- print(key,iterm[0],iterm[1])
- print("你还剩余\033[31;1m%s\033[0m人民币" %user_salary)
- break
- else:
- print("请输入正确的工资")
8、关于字典dict
字典有如下特点:
1) key-value格式,key是唯一的
2) 无序的
3) 查询速度快
一个简单的dcit字典的例子:
- info = {'name':'Dean',
- 'job':'IT',
- 'age':23,
- 'company':'XDHT'
- }
- print(info)
运行结果如下:
D:\python35\python.exe D:/python培训/s14/day2/dcit-2.py
{'company': 'XDHT', 'name': 'Dean', 'age': 23, 'job': 'IT'}
从这里也可看出字典是无序的
字典的增删查改
还有一种删除数据,但是如果字典为空的时候会报错,info.pop("name")
代码例子如下:
- info = {'name':'Dean',
- 'job':'IT',
- 'age':23,
- 'company':'XDHT'
- }
- print(info)
- info.pop("name")
程序运行结果如下:
D:\python35\python.exe D:/python培训/s14/day2/dcit-2.py
{'name': 'Dean', 'company': 'XDHT', 'age': 23, 'job': 'IT'}
{'company': 'XDHT', 'age': 23, 'job': 'IT'}
Process finished with exit code 0
但是如果用info.pop()的时候,删除的数据不存在就会报错
将dict的key,value转换成列表的形式显示
print(info.items())
效果如下:
D:\python35\python.exe D:/python培训/s14/day2/dcit-2.py
dict_items([('job', 'IT'), ('company', 'XDHT'), ('age', 23), ('name', 'Dean')])
特别说明一下,在python3.0中取消了has_key()的用法
而代替的方法是可以in或者not in
代码例子:
if "name" in info:
print("ok")
根据列表abc来创建dict里的key,后面的test是默认的value,如果不指定就是None
info = {}
info = info.fromkeys(["a","b","c"],"test")
print(info)
运行结果如下:
info = {}
info = info.fromkeys(["a","b","c"],"test")
print(info)
info.keys() #打印出字典的key
info.values() #打印出字典的value
方法1
for key in info:
print(key,info[key])
方法2
for k,v in info.items():
print(k,v)
在实际中尽量不要用方法2,因为方法2的效率比方法1的效率低,方法2会先把dict字典转换成list,所以数据大的时候不要用
9、关于字典的嵌套,代码例子如下:
- menu_dict={
- "河南省":{
- "焦作市":{
- "修武县":{"AA","BB","CC"},
- "武陟县":{"DD","EE","FF"},
- "博爱县":{"GG","HH","II"}
- },
- "新乡市":{
- "辉县":{"AA","BB","CC"},
- "封丘县":{"DD","EE","FF"},
- "延津县":{"GG","HH","II"}
- }
- },
- "河北省":{
- "邢台":{
- "宁晋县":{"AA","BB","CC"},
- "内丘县":{"DD","EE","FF"},
- "邢台县":{"GG","HH","II"}
- },
- "唐山":{
- "乐亭县":{"AA","BB","CC"},
- "唐海县":{"DD","EE","FF"},
- "玉田县":{"GG","HH","II"}
- }
- }
- }
python---基础之模块,列表,元组,字典的更多相关文章
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...
- python 基础篇 04(列表 元组 常规操作)
本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...
- python基础数据类型之列表,元组操作
一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...
- Python自动化开发 - 字符串, 列表, 元组, 字典和和文件操作
一.字符串 特性:字符串本身不可修改,除非字符串变量重新赋值.Python3中所有字符串都是Unicode字符串,支持中文. >>> name = "Jonathan&q ...
- python的对象类型-----列表&元组&字典
列表: #定义列表 l=[1,'a',[3,4]] #l=list([1,'a',[3,4]]) #取值 print(l[0]) print(l[2][0]) l=[1,2,[['a','b'],'c ...
- Python基础语法之列表 元组
1 列表 列表由一系列按照特定顺序的元素组成,其中的元素可以使不同的数据类型,用[ ]来表示列表,用逗号来分割列表中的元素. 1.1 列表操作之切片 a = [1, 2, 3, 4, 5, 6, 7, ...
- python基础===如何在列表,字典,集合中根据条件筛选数据
#常见的操作如下: data = [1, 5, -3, -2, 6, 0, 9] res = [] for x in data: if x>=0: res.append(x) print(res ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
随机推荐
- Mac安装软件报“打不开。。。,因为它来自身份不明的开发者”的解决办法
问题描述 在Mac上安装git,双击pkg进行安装,报如下图错误: 解决办法 不要双击pkg文件,改成选中文件之后,鼠标右键,选择“打开方式->安装器(默认)”,即可继续安装.
- [leetcode] 题型整理之查找
1. 普通的二分法查找查找等于target的数字 2. 还可以查找小于target的数字中最小的数字和大于target的数字中最大的数字 由于新的查找结果总是比旧的查找结果更接近于target,因此只 ...
- 解决webstorm卡顿问题
webstorm强大的功能就不多做介绍了.但是它的缺点也显而易见:吃内存. 电脑配置稍低一点,运行webstorm就特别容易卡顿,特别是项目比较大的时候,那卡顿得不要不要的. 在我的笔记本8g内存 2 ...
- python操作日期和时间的方法
不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...
- Leetcode First Missing Positive
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- <六>JDBC_DAO 设计模式
JDBC_DAO设计模式 DAO:Data Access Object(数据访问对象) why:实现功能的模块化,更有利于代码的维护和升级. what:访问数据信息的类,包含了对数据的CRUD(c ...
- 使用R语言-RStudio快捷键
控制台 功能 Windows & Linux Mac 移动鼠标到控制台 Ctrl+2 Ctrl+2 控制台清屏 Ctrl+L Command+L 移动鼠标至第一行 Home Command+L ...
- AD Local Domain groups, Global groups and Universal groups
http://ss64.com/nt/syntax-groups.html Rules that govern when a group can be added to another group ( ...
- Eclipse下使用GDT插件无法登陆GAE & GDT无法上传JAVA代码
今天更新github主页的过程中,想使用GAE部署一个Java Web服务来更好的支持网站动态性(关键是利用了免费的GAE资源),结果遇到了2个大问题. 1.GDT插件无法登陆GAE账户 错误1:登陆 ...
- Socket--Java
Server.java package socket; import java.io.BufferedReader; import java.io.DataInputStream; import ja ...