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 循环中就可以对它进行循环处理了.那么 ...
随机推荐
- numpy 数值的修改
一.步骤 1.查找值 使用数组的索引和切片 2.修改值 直接赋值 例子 import numpy as np arr1 = np.arange(0, 24).reshape(4, 6) # 使用数组的 ...
- kafka(一)-为什么选择kafka
作为开发人员,我们在选择一个框架或者工具时,我们都需要考虑些什么,我们不是头脑发热,一拍脑袋就它了,我们首先要认清这个框架或工具的作用是什么,能给我们带来什么样的好处,同时也要考虑带来什么样的负面结果 ...
- Jenkins-k8s-helm-harbor-githab-mysql-nfs微服务发布平台实战
基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部 ...
- mysql中更改字符集为utf8&&mysql中文输入不了问题解决
写给TT:对不起啦!! 嗯,输入不了中文,大多数问题是mysql的字符集设置的问题,当然,别的问题也有可能, 这里我们用两种方法设置mysql的字符集,图形化工具和命令行的方式(一种操作完即可) 一, ...
- MCLS Notes
MainToolbar View Button Click Event handle àMainToolbar.xaml.cs OnConnect() functionàService.Messeng ...
- Browser Security-css、javascript
层叠样式表(css) 调用方式有三种: 1 用<style> 2 通过<link rel=stylesheet>,或者使用style参数. 3 XML(包括XHTML)可以通过 ...
- spring源码系列(一):使用Gradle构建spring5源码的一些坑和步骤
源代码github: https://github.com/spring-projects/spring-framework.git 一 修改项目配置文件中gradle版本和地址 替换成本地安装的版 ...
- 1759: 学生信息插入(武汉科技大学结构体oj)(已AC)
#include<stdio.h>struct student { long no; char name[9]; int score;} t;void input(struct stude ...
- 基于 HTML5 WebGL 的智慧城市(一)
前言 中共中央.国务院在今年12月印发了<长江三角洲区域一体化发展规划纲要>(下文简称<纲要>),并发出通知,要求各地区各部门结合实际认真贯彻落实. <纲要>强调, ...
- [求解!!!] springboot在运行web项目时报错
2017-05-10 17:40:54.343 INFO 4852 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing ...