前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python(3)字典及列表

python(3)字典及列表

作者头像
py3study
发布2020-01-07 14:36:31
8500
发布2020-01-07 14:36:31
举报
文章被收录于专栏:python3python3

列表list:打了激素的数组

数组是只能存储同一种数据类型的结构;

数组: scores[43] = [12, 12.0, "hello"]

元组tuple # 定义列表 li = [1, 1.0, "westos", (1,2,3,4), [1,2,3,4]] # 定义元组

t = (1, 1.0, "westos", (1,2,3,4), [1,2,3,4])

输出:

[1, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4]]

(1, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4]) # 元组是不可变数据类型,不能修改元素; #t[0] = 11 # 列表是可变数据类型,可以修改元素;    li[0] = 13    li:    [13, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4]] 分析列表的特性(与元组对比) 索引In [9]: print li # 正向索引 li[0] # 反向索引 li[-1] # 拿出列表最后一个元素, 最后一个元素是列表, 再拿出列表的第三个元素,如下 : li[-1][2] [13, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4]] 3 切片 li # 去掉列表的第一个元素 li[1:] # 逆序显示 li[::-1] [[1, 2, 3, 4], (1, 2, 3, 4), 'westos', 1.0, 13] 重复, 连接 li * 2 # 不建议这样连接两个列表,后面有效率更高的方法 ; li1 = ["westos", "new year"] li+li1 [13, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4], 'westos', 'new ye ar'] 成员操作符 print li print 13 in li print 13 not in li [13, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4]] True False 列表的增删改查 增 # ip 白名单 allow_ip = ["172.25.254.1","172.25.254.3", "172.25.254.26" ] print "追加元素到列表的最后:" allow_ip.append("172.25.254.250") print allow_ip print print "增加元素到列表的指定位置:" allow_ip.insert(0, "192.168.1.253") print allow_ip print # iterable 代表可迭代的; # 目前学习的可迭代对象有 : str, list, tuple print "增加多个元素到列表最后:" allow_ip.extend(["172.25.254.45", "172.25.56.21"]) print allow_ip 追加元素到列表的最后: ['172.25.254.1', '172.25.254.3', '172.25.254.26', '172.25.254.25 0'] 增加元素到列表的指定位置: ['192.168.1.253', '172.25.254.1', '172.25.254.3', '172.25.254.2 6', '172.25.254.250'] 增加多个元素到列表最后: ['192.168.1.253', '172.25.254.1', '172.25.254.3', '172.25.254.2

6', '172.25.254.250', '172.25.254.45', '172.25.56.21']

# 通过列表的索引,对列表某个索引值重新赋值; allow_ip[0] = "192.168.1.1" print allow_ip ['192.168.1.1', '172.25.254.1', '172.25.254.3', '172.25.254.26', '172.25.254.250', '172.25.254.45', '172.25.56.21'] 查 buy = ["apple", "computer","apple"] # 统计某个元素在列表中出现的次数 ; print buy.count("apple") # 找到某个值在列表中的索引值 print buy.index("computer") 2 1 删 In [58]: # 删除列表中遇到的第一个 value 值; buy.remove("apple") print buy # 删除列表中第 i 个索引值; del buy[0] print buy # 删除除了第一个元素之外的其他索引值 del buy[1:] # 删除列表对象 del buy ['computer', 'apple'] ['apple']In [3]: li = [1,2,45,23,21, 45] # 删除指定索引对应的值,默认是最后一个元素 ; li.pop() print li # 删除列表的第一个索引 ; li.pop(0) [2, 45, 23, 21] 其他的排序及逆转 # 排序,如果说都是数字,按照数字大小排序 ; # 是字母的话,按照 ASCII 码来排序; # **** 如何查看对应的 ASCII 码 ? ord('a') li = [12, 34, 56, 8] li.sort() print li # 逆转; li[::-1] li.reverse() print li [8, 12, 34, 56] [56, 34, 12, 8]

字典(dict) 字典创建: 1)赋值创建字典 2)通过工厂函数创建字典 # 赋值创建字典 , key-value , 键值对 d = {"key1":"value1", "key2":"value2"} print d {'key2': 'value2', 'key1': 'value1'} In [2]: services = {"ssh":22, "ftp":[20,21], "http":[80, 8080]} print services {'ftp': [20, 21], 'http': [80, 8080], 'ssh': 22} In [3]: # 通过工厂函数创建字典 userinfo = dict(user1="123", user2="456", user3 ="789") print userinfo {'user2': '456', 'user3': '789', 'user1': '123'} In [14]: # 通过字典的 fromkeys 方法创建字典,所有元素有一个默认值; # 如果没有指定默认值,默认为 None; print {}.fromkeys("hello") # 给每个元素设置默认值为 "123"; print {}.fromkeys(["user1", "user2", "user3"], "123") {'h': None, 'e': None, 'l': None, 'o': None} {'user2': '123', 'user3': '123', 'user1': '123'}

分析字典的特性(跟元组和列表比较) 字典不能索引和切片,因为字典是无序的数据类型; 字典不支持重复和连接; 字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in字典的增删改查

一 增

字典名[key] = value d.update(a=1, b=2) d.update({'a':1, 'b',2}) d.setdefault('a', 1) ** 重点: setdefault 和 update方法的不同 services = {"ftp":[20,21]} # 通过字典名 [key]=value, 将 key-value 添加到字典中 ; services['http'] = [80, 8080] print services {'ftp': [20, 21], 'http': [80, 8080]} # update 方法实现添加: key 存在,覆盖 value 值, 否则,添加 services = {"ftp":[20,21]} services1 = {'http':[80,8080]} # services.update(services1) # print services # 更建议使用 services.update(http=[80,8080], ftp=22) print services {'ftp': 22, 'http': [80, 8080]} # setdefault 实现添加: key 存在,不覆盖 value 值, 否则,添加 services = {"ftp":[20,21]} services1 = {'http':[80,8080]} services.setdefault("ftp", 22) print services {'ftp': [20, 21]}

二 改

字典名[key]=value d.update({'a':2, 'b':3}) d.update(a=2, b=3)

三 查:

services = {'ftp': 22, 'http': [80, 8080]} # 查看 key 值 services.keys() services.viewkeys() services.iterkeys() # 给 key 起名字 # 查看 value 值 services.values() # 查看 key-value 键值对 services.items() [('ftp', 22), ('http', [80, 8080])] # 查看 key 是否存在 ; services.has_key('ftpp') # 查看指定 key 对应的 value 值;如果 key 不存在,不报错; 如果存在,返回 value 值; # services['ftp'] 如果 key 不存在,直接报错; services.get('ftpp')

四 删

d.pop(key) 删除指定 key 的字典元素; d.popitem() 随机删除字典的 key-value 元素 ; del d[key] 删除指定 key 的字典元素; d.clear() 清空字典元素 循环遍历字典 In [41]: for i,j in services.items(): print i,j ftp 22 http [80, 8080] In [43]: # 默认情况下遍历字典的 key 值; for i in services: print i ftp http

字典应用 应用1: 通过字典实现case语句 目前python不支持case语句; 实现case语句的两种方式: if...elif...elif...else... 字典实现In [ ]: # if...elif...elif...else... 实现: #coding:utf-8 """ # 实现四则运算 - 用户分别输入第一个数字,运算操作符,第三个数字; - 根据用户的运算操作打印出运算结果; """ from __future__ import division num1 = input() ope = raw_input() num2 = input() # case 语句 if ope == "+": print num1+num2 elif ope == "-": print num1-num2 elif ope == "*": print num1*num2 elif ope == "/": print num1/num2 else: print "error operator"In [ ]: # 字典实现 case 语句 #coding:utf-8 """ # 实现四则运算 - 用户分别输入第一个数字,运算操作符,第三个数字; - 根据用户的运算操作打印出运算结果; """ from __future__ import division num1 = input() ope = raw_input() num2 = input() d = { "+":num1+num2, "-":num1-num2, "*":num1*num2, "/":num1/num2, } if not ope in d: print "error operator" else: print d[ope]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档