Python学习小记(2)---[list, iterator, and, or, zip, dict.keys]
1.List行为
可以用 alist[:] 相当于 alist.copy() ,可以创建一个 alist 的 shallo copy,但是直接对 alist[:] 操作却会直接操作 alist 对象
>>> alist = [1,2,3]
>>> blist = alist[:] #assign alist[:] to blist
>>> alist
[1, 2, 3]
>>> blist
[1, 2, 3]
>>> blist[2:] = ['a', 'b', 'c'] #allter blist
>>> alist
[1, 2, 3]
>>> blist
[1, 2, 'a', 'b', 'c']
>>> alist[:] = ['a', 'b', 'c'] #alter alist[:]
>>> alist
['a', 'b', 'c']
2.循环技巧
#list
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave #zip函数
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
... print('What is your {0}? It is {1}.'.format(q, a))
...
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue. #reversed & sorted
#Note: 这两个函数不修改参数本身,返回一个iterator
#reversed
>>> for i in reversed(range(1, 10, 2)):
... print(i)
...
9
7
5
3
1 #sorted
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
... print(f)
...
apple
banana
orangez
pear
3.
enumerate()函数可以把创建ist,str的可迭代对象,迭代对象每次返回一个(index, value),形式的元组
>>> astr = 'abc'
>>> alist = [1,2,3]
>>> enumerate(astr)
<enumerate object at 0x0374D760>
>>> enumerate(alist)
<enumerate object at 0x0374D698>
>>> def print_iterator(iterator):
... for ele in iterator:
... print(ele)
...
>>> print_iterator(astr)
a
b
c
>>> print_iterator(enumerate(astr))
(0, 'a')
(1, 'b')
(2, 'c')
>>> print_iterator(enumerate(alist))
(0, 1)
(1, 2)
(2, 3)
>>>
4.zip()示例
>>> a = [1,2,3]
>>> b = ['a', 'b', 'c']
>>> c = ['one', 'two', 'three']
>>> a,b,c
([1, 2, 3], ['a', 'b', 'c'], ['one', 'two', 'three'])
>>>
>>> def print_iterator(iterator):
... for ele in iterator:
... print(ele)
...
>>>
>>> print_iterator(zip(a))
(1,)
(2,)
(3,)
>>> print_iterator(zip(a,b))
(1, 'a')
(2, 'b')
(3, 'c')
>>>
>>> print_iterator(zip(a,b,c))
(1, 'a', 'one')
(2, 'b', 'two')
(3, 'c', 'three')
5.
注意 adict.keys() 返回的只是 adict 的 keys 的视图
>>> adict = dict(a=1, b=2)
>>> adict
{'a': 1, 'b': 2}
>>> view = adict.keys()
>>> view
dict_keys(['a', 'b'])
>>> adict['c'] = 3
>>> view
dict_keys(['a', 'b', 'c'])
6.不一样的逻辑运算返回值
大概规则就是返回第一个可以判别表达式真假对象
>>> '' and 'a' and 'b'
''
>>> 'c' and '' and 'b'
''
>>> 'c' and 0 and 'b'
0
>>> '' or 'a' or 'b'
'a'
>>> 'c' or '' or 'b'
'c'
>>> '' or 0 or 'b'
'b'
>>> 1 and 3 and 4
4
>>> 0 or '' or []
[]
7.注意list的迭代方式,若要获得 (k, v) ,需要调用 adict.items() , 直接迭代只能获得 key, 和 adict.keys() 是完全等效的
>>> adict = {'one':'first', 'two':'second', 'three':'third'}
>>> adict
{'one': 'first', 'two': 'second', 'three': 'third'}
>>> it = iter(adict)
>>> it
<dict_keyiterator object at 0x010A8F60>
>>> next(it)
'one'
>>> keys = adict.keys()
>>> keys
dict_keys(['one', 'two', 'three'])
>>> items = adict.items()
>>> items
dict_items([('one', 'first'), ('two', 'second'), ('three', 'third')])
>>> iter(items)
<dict_itemiterator object at 0x010BAC30>
>>> iter(keys)
<dict_keyiterator object at 0x010BAC90>
Python学习小记(2)---[list, iterator, and, or, zip, dict.keys]的更多相关文章
- Python学习笔记014——迭代器 Iterator
1 迭代器的定义 凡是能被next()函数调用并不断返回一个值的对象均称之为迭代器(Iterator) 2 迭代器的说明 Python中的Iterator对象表示的是一个数据流,被函数next()函数 ...
- python学习小记
python HTTP请求示例: # coding=utf-8 # more materials: http://docs.python-requests.org/zh_CN/latest/user/ ...
- Python学习小记(5)---Magic Method
具体见The Python Language Reference 与Attribute相关的有 __get__ __set__ __getattribute__ __getattr__ __setat ...
- Python学习小记(4)---class
1.名称修改机制 大概是会对形如 __parm 的成员修改为 _classname__spam 9.6. Private Variables “Private” instance variables ...
- Python学习小记(3)---scope&namespace
首先,函数里面是可以访问外部变量的 #scope.py def scope_test(): spam = 'scope_test spam' def inner_scope_test(): spam ...
- Python学习小记(1)---import小记
在这种目录结构下,import fibo会实际导入fibo文件夹这个module λ tree /F 卷 Programs 的文件夹 PATH 列表 卷序列号为 BC56-3256 D:. │ fib ...
- python 学习小记之冒泡排序
lst =[11,22,44,2,1,5,7,8,3] for i in range(len(lst)): i = 0 while i < len(lst)-1: ...
- Python学习 Day 3 字符串 编码 list tuple 循环 dict set
字符串和编码 字符 ASCII Unicode UTF-8 A 1000001 00000000 01000001 1000001 中 x 01001110 00101101 11100100 101 ...
- [Python学习]Iterator 和 Generator的学习心得
[Python学习]Iterator 和 Generator的学习心得 Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止.这样在 for 循环中就可以对它进行循环处理了.那么 ...
随机推荐
- kubernetes基础概念知多少
kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用.高扩展性和可预测性的方式来管理容器应用的生命周期.通过k8s,用户可以定义程序运行方式.部署 ...
- 保存数据到csv
csv 逗号分隔值 一.写入 1.列表 单行添加 import csv # with open(file='a.csv', mode='w', encoding='utf-8', newline='' ...
- 定时任务莫名停止,Spring 定时任务存在 Bug??
Hello~各位读者新年好!这里楼下小黑哥给大家拜个年,祝大家蒸蒸日上烫烫烫,年年有余屯屯屯. 那年那 Bug 春节放假,小黑哥坐上高铁回家,突然想到一次生产问题.那是小黑哥参加工作第一年,那一年国庆 ...
- MYGUI3.2改造——与HGE结合,实现资源打包
其实这个有点标题党的意思.MYGUI本身有资源打包的接口,可以实现从内存读取文件. 而HGE也提供了资源打包的功能(不过HGE的资源文件管理比较弱).把MYGUI的接口接到HGE上就可以实现MYGUI ...
- 清晰架构(Clean Architecture)的Go微服务: 编码风格
编码风格在编程中是一个相对乏味的主题,但是合适的编码风格对一个有效的程序员是至关重要的. 它有三个组成部分: 程序结构 ( application layout) 编码规则或风格 命名约定 我已经在清 ...
- 小程序--->小程序图片上传阿里OSS使用方法
小程序图片上传阿里OSS使用方法 首先看下参考文档 ( http://blog.csdn.net/qq_38125123/article/details/73870667) 这里只将一些运用过程中遇到 ...
- 深入分析Java反射(一)-核心类库和方法
前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行 ...
- python中map()和dict()的用法
map()用法 map()是python的内置函数,会根据提供的函数对指定序列做映射. 语法: map(func, iter, ...) 其中func为一个功能函数,iter表示可迭代参数序列.map ...
- 宅在家学不进去吗?试试这些 GitHub 上简单易学的游戏项目吧
作者:HelloGitHub-小鱼干 这是本人宅在家里的第 4 周,代码不想看,技术文章不想读,都不能愉快学习了我还怎么当一个优秀的需求消化师呢?有没有什么轻松地方法来学习技术呢?想起了小时候金山打字 ...
- WeChall_ Training: Stegano I (Training, Stegano)
This is the most basic image stegano I can think of. 解题: 一张小图片,文本方式打开.