Python dic/set/迭代
字典的定义
值的输出
1 2 | print dic[ "name" ] #zhangsan print dic[ "val" ][ "math" ] #60 |
字典的遍历
dic = {"name":"zhangsan","age":7,"val":{"math":60,"eng":80}} print "only key" for key in dic.keys(): print key print "only val" for val in dic.values(): print val
#
那这两个方法values itervalues 有何不同之处呢?
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心
print "both" for key,val in dic.items(): print key,val
iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
输出的结果:
$ python test.py
only key
age
name
val
only val
7
zhangsan
{'math': 60, 'eng': 80}
both
age 7
name zhangsan
val {'math': 60, 'eng': 80}
$ python test.py
only key
age
name
val
only val
7
zhangsan
{'math': 60, 'eng': 80}
both
age 7
name zhangsan
val {'math': 60, 'eng': 80}
Python 中set
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
s = set(['a','b','c']) print s #输出set(['a', 'c', 'b']) s = set(['a','b','c','a']) print s #输出set(['a', 'c', 'b'])
a = set(['a','b','c']) b = set(['a','b','c','d']) print a & b #交集 输出set(['a', 'c', 'b']) print a | b #并集 输出set(['a', 'c', 'b', 'd']) print b - a #差集 输出set(['d'])
print a - b #差集 输出set([])
打印出两个数组相同和不同的元素
list1 = [1,5,7,8,9]
list2 = [1,5,6,7,8]
print set(list1) & set(list2)
print set(list1) ^ set(list2)
set 有 add reomove 的方法
添加元素时,用set的add()方法:
如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:删除set中的元素时,用set的remove()方法: 如果删除的元素不存在set中,remove()会报错:
s = set(['Adam', 'Lisa', 'Paul']) s.add('Adam') print s #输出set(['Lisa', 'Paul', 'Adam']) s.remove('Lisa') print s #输出set(['Paul', 'Adam'])set(['Paul', 'Adam'])
list 的迭代,带有索引,使用python内置函数 enumerate
s = ['Adam', 'Lisa', 'Paul'] for index,val in enumerate(s,start=1): print index,val
输出
1 Adam
2 Lisa
3 Paul
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
2017-08-03 postfix/dovecot邮件服务器