Python基础,day2

本节内容

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码

1. 列表、元组操作

列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

定义列表

name = ["Martin","Annie","JMA","Martin","Ly"]

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

1 >>> name[0]
2 ‘Martin‘
3 >>> name[4]
4 ‘Ly‘
5 >>> name[-1]    #可以倒着取
6 ‘Ly‘

切片:取多个元素

>>> name = ["Martin","Annie","JMA","Martin","Ly"]
>>> name[1:4]               #取下标1至下标4之间的数字,包括1,不包括4
[‘Annie‘, ‘JMA‘, ‘Martin‘]
>>> name[0:3]               #取下标0至下标3间的数字,包括0,不包括3
[‘Martin‘, ‘Annie‘, ‘JMA‘]
>>> name[:3]                 #如果是从头开始取,0可以忽略,跟上句效果一样
[‘Martin‘, ‘Annie‘, ‘JMA‘]
>>> name[3:-1]              #取下标3至-1的值,不包括-1
[‘Martin‘]
>>> name[3:]                 #如果想取最后一个,必须不能写-1,只能这么写
[‘Martin‘, ‘Ly‘]
>>> name[0::2]              #后面的2是代表,每隔一个元素,就取一个
[‘Martin‘, ‘JMA‘, ‘Ly‘]
>>> name[::2]                #和上面的效果一样
[‘Martin‘, ‘JMA‘, ‘Ly‘]

追加

>>> name.append("HZY")
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]

插入

>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]
>>> name.insert(1,"HZY")
>>> name
[‘Martin‘, ‘HZY‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]

修改

[‘Martin‘, ‘HZY‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]
>>> name[1] = "acer"
>>> name
[‘Martin‘, ‘acer‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]

删除

>>> name
[‘Martin‘, ‘acer‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]

>>> del name[1]
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘, ‘HZY‘]

>>> name.remove("HZY")    #删除指定元素
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Ly‘]

>>> name.pop()    #删除列表最后一个值
‘Ly‘
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, ‘Martin‘]

扩展

>>> name2 = [1,2,3,4]
>>> name.extend(name2)
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, ‘Martin‘, 1, 2, 3, 4]

拷贝

浅copy,列表的copy
>>> name = ["Martin", "Annie", "JMA", ["ABC", "test"], "Martin"]
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘ABC‘, ‘test‘], ‘Martin‘]
>>> name2 = name.copy()
>>> name2
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘ABC‘, ‘test‘], ‘Martin‘]

>>> name[3][0]
‘ABC‘
>>> name[3][0] = "abc"

>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]
>>> name2
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]

浅copy,copy模块的copy
>>> import copy
>>> name3 = copy.copy(name)
>>> name3
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]

>>> name[3][0] = "123"

>>> name3
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘123‘, ‘test‘], ‘Martin‘]
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘123‘, ‘test‘], ‘Martin‘]

deepcopy,copy模块的deepcopy,一般别用
>>> import copy
>>> name4 = copy.deepcopy(name)
>>> name4
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘123‘, ‘test‘], ‘Martin‘]
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘123‘, ‘test‘], ‘Martin‘]

>>> name[3][0] = "abc"

>>> name4
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘123‘, ‘test‘], ‘Martin‘]
>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]

统计

>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]
>>> name.count("Martin")
2

排序&翻转

>>> name
[‘Martin‘, ‘Annie‘, ‘JMA‘, [‘abc‘, ‘test‘], ‘Martin‘]
>>> name.sort()    #排序
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ‘<‘ not supported between instances of ‘list‘ and ‘str‘     #3.0里不同数据类型不能放在一起排序了

>>> name[3] = "test"
>>> name
[‘Annie‘, ‘JMA‘, ‘Martin‘, ‘test‘, ‘Martin‘]
>>> name.sort()
>>> name
[‘Annie‘, ‘JMA‘, ‘Martin‘, ‘Martin‘, ‘test‘]

>>> name.reverse()    #反转
>>> name
[‘test‘, ‘Martin‘, ‘Martin‘, ‘JMA‘, ‘Annie‘]

获取下标

>>> name
[‘test‘, ‘Martin‘, ‘Martin‘, ‘JMA‘, ‘Annie‘]
>>> name.index("JMA")
3

清空列表

name.clear()  #清空列表

列表循环

for i in name:
     for j in i:
         print(j)
     print(i)

元组

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

语法:

>>> name = ("Martin", "JMA", "Ly")
>>> name
(‘Martin‘, ‘JMA‘, ‘Ly‘)

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

2. 字符串操作

特性:不可修改

3. 字典操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

语法:

info = {
    "stud001": "xiaoming",
    "stud002": "xiaohong",
    "stud003": "xiaodong",
    "stud004": "xiaomei"
}

字典的特性:

  • dict是无序的
  • key必须是唯一的

增加

info["stud005"] = "xiao"
print(info.setdefault("stud004","martin"))  #key存在时打印对应value
print(info.setdefault("stud005","martin"))  #key不存在时增加

修改

info["stud001"] = "xiao"
info["stud001"] += ",xiao"
{‘stud001‘: ‘xiaoming,xiao‘, ‘stud002‘: ‘xiaohong‘, ‘stud003‘: ‘xiaodong‘, ‘stud004‘: ‘xiaomei‘}

删除

info.pop("stud001")    #指定删除
info.popitem()    #随机删除
del info["stud002"]   #python的删除方法

查找

"stud003" in info    #标准用法,判断key是否在字典里,存在未Ture,不存在为False
True
print(info.get("stud001"))    #这个不会,不存在会返回none
print(info["stud001"])    #该方法当key不存在时会报错

其他操作

print(info.keys())       #获取字典的key列表
print(info.values())    #获取字典的value列表
print(info.items())    #将字典转换成列表
dict_items([(‘stud001‘, ‘xiaoming‘), (‘stud002‘, ‘xiaohong‘), (‘stud003‘, ‘xiaodong‘), (‘stud004‘, ‘xiaomei‘)])

字典循环

方法1:
for key in info:
    print(key,info[key])

方法二:
for k,v in info.items(): #会先把dict转成list,数据量大时莫用
    print(k,v)

字典更新合并

>>> info
{‘stud001‘: ‘xiaoming‘, ‘stud002‘: ‘xiaohong‘, ‘stud003‘: ‘xiaodong‘, ‘stud004‘: ‘xiaomei‘}
>>> b
{1: 2, 3: 4}
>>> info.update(b)
>>> info
{‘stud001‘: ‘xiaoming‘, ‘stud002‘: ‘xiaohong‘, ‘stud003‘: ‘xiaodong‘, ‘stud004‘: ‘xiaomei‘, 1: 2, 3: 4}

多级字典嵌套及操作

menu = {
    "jiangxi": {
        "nanchang": {
            "xinjianxian": ["ncu", "bank"],
            "nanchangxian": ["caijingdaxue", "jishuxueyuan"]
        },
        "jiujiang": {
            "xiushuixian": "修水县地图",
            "jiujiangxian": "九江县地图"
        }
    },
    "guangdong": {
        "shenzhen": {
            "longhuaqu": "龙华区地图",
            "luohuqu": "罗湖区地图"
        }
    }
}
menu["jiangxi"]["nanchang"]["xinjianxian"][0] += " univercity"
print(menu["jiangxi"]["nanchang"]["xinjianxian"][0])
ncu univercity

程序练习

程序: 三级菜单

要求:

  1. 打印省、市、县三级菜单
  2. 可返回上一级
  3. 可随时退出程序

exit_flag = False
while not exit_flag:
    for i in menu:
        print(i)
    choice = input("1>>:")
    if choice in menu:
        while not exit_flag:
            for i2 in menu[choice]:
                print("\t", i2)
            choice2 = input("2>>:")
            if choice2 in menu[choice]:
                while not exit_flag:
                    for i3 in menu[choice][choice2]:
                        print("\t\t", i3)
                    choice3 = input("3>>:")
                    if choice3 in menu[choice][choice2]:
                        for i4 in menu[choice][choice2][choice3]:
                            print("\t\t\t",i4)
                        choice4 = input("4按b返回上层>>:")
                        if choice4 == "b":
                            pass
                        elif choice4 == "q":
                            exit_flag = True
                    if choice3 == "b":
                        break
                    elif choice3 == "q":
                        exit_flag = True
            if choice2 == "b":
                break
            elif choice2 == "q":
                exit_flag = True

时间: 2024-11-04 23:30:23

Python基础,day2的相关文章

Python基础 day2

Python基础 一.Python的数据类型 1.int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647,而.在64位系统上,整数的位数为64位,取值范围为-2**63-2**63-1,即-9223372036854775808-9223372036854775807 2.long(长整型) 为什么会有这个概念呢? 因为在Python2.2起,如果放置在内存里的数特别大发生溢出,Python就会自动将整型数据转换

python 基础 day2

本机知识点 一.二进制 二进制二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二",由18世纪德国数理哲学大师莱布尼兹发现.当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的.计算机中的二进制则是一个非常微小的开关,用"开"来表示1,"关"来表示0. 二进制与十进制的转换,二进制的第n位代表的十进制值都刚好遵循着

Python之路,Day2 - Python基础2

Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 names = ['Alex',"Tenglan",'Eric'] 通过下标访问列表中的元素,下标从0开始计数 1 2 3 4 5 6 7 8 >>> names[0] 'Alex' >>> na

day2抓包&amp;python基础

抓包: 为什么要抓包: 1.定位问题 2.篡改请求 3.能测试系统的其他的异常 手机抓包charles: 1.打开charles,必须保证手机和电脑是在一个局域网里面 2.手机设置代理,服务器写你电脑的ip,端口号默认是8888 https协议的抓取不到数据,安全协议,需要对应公司自己的证书导入到抓包工具才可以. 模拟弱网测试:可限速的 设置端口: soupui: 1.sopaui新建一个soap项目2.在wsdl地址这里,填上 wsdl接口的地址3.左边是请求的数据,右边是返回的数据 pyth

python 基础(一)

一.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 1.1.Python应用领域: l 云计算: 云计算最火的语言, 典型应用OpenStack l WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣..., 典型WEB框架有Django l 科学运算.人工智能: 典型库N

linux+jmeter+python基础+抓包拦截

LINUX 一 配置jdk 环境 *需要获取root权限,或者切换为root用户 1.windows下载好,去 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 官方网站下载jdk(linux相应版本) 2.在usr目录下创建java路径文件夹 [root bin]cd /usr mkdir java 3.将jdk-8u60-linux-x64.tar.gz放到刚才创建的文件夹下

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

Python基础入门 (一)

一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: Python 2.x is legacy, Python 3.x is the present and future of the language Python 3.0 was released in 2008. The final 2.x version 2.7 release came out

Python 基础 - Day 4 Learning Note - Generator 生成器

列表生成器/列表解析 list comprehension 简单灵活地创建列表,通常和lambda(), map(), filter() 一起使用 通过列表生成式, 直接创建列表.但是,收到内容限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问几个元素,那其他的就白占空间.列表生成器能够一边循环一边计算,大大节省大量的空间.是生成器的一种. 只有调用,才能生成. 不支持切片操作,只能通过__next()___一个个取数字. 基本语法

python基础教程(第二版)

开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3章使用字符串 python基础第4章字典 python基础第5章循环 python基础第6章函数和魔法参数 python基础第7章类 python基础第8章异常 python基础第9章魔法方法.属性和迭代器 python基础第11章文件 python基础第12章GUI(wxPython) pytho