一些迭代工具

编程,写 编程,可是到现在 ,我倒觉得数据结构要挂科了。应试教育害死人,没有办法,挂了就挂了吧,不过为了以后,还是得好好复习,话说以后可能有用的。首先是树和图,在后面好像说要看看这些东西,慢慢来。
继续今天的课程。说了这么多的迭代,没有怎么仔细说过这个词语的意思,查了字典,这个词语就是循环的意思,它是一个动词,一直往返运行。

1.并行迭代
意思就是可以同时迭代两个序列。
names=['wang','du','li','lei']
ages=[12,23,42,22]

for i in range(len(names)):
    print names[i], 'is' ,ages[i], 'year old'

wang is 12 year old
du is 23 year old
li is 42 year old
lei is 22 year old

这里有一个zip函数,就是压缩的意思,可以把两个序列合并到一起,形成一个列表
>>>zip(names,ages)
[('wang',12),('du',23),('li',42),('lei',22)]

他也可以用于任意多的序列,
>>>zip(range(5),xrange(1000))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

上面中,不推荐在第二个里面使用range,因为这个会一直计算到1000,而xrange不会,他只计算前面的五个。

2.编号迭代
有时候要想迭代序列中的对象,同时还要获取当前对象的索引。关于这个索引,在序列中讲的是得出其元素,并且给出他的位置。例如,在一个字符串中替换所有包含‘xxx’的字符串,实现的方法有很多。
index=0
for string in strings:
    if 'xxx' in string:
    string[index]='[censored]'
index+=1

这个认真想一下,还是可以理解的,‘xxx‘是字符串,当时我想为什么不是直接就是if 'xxx' in string ,如果这样的话,就无法执行循环了。
还有一个使用内建函数的。
for index.string  in enumerate(strings):
    if 'xxx' in string:
        string[index]='[censored]'
这个内建函数可以在提供索引的地方迭代  索引-值 对。
这个不懂,标记。

3.翻转和排序迭代
先看两个函数sorted和reversed,他们和列表里的reverse和sort方法一样,但是作用于任何序列或可迭代的对象上面,不是原地修改对象,而是返回翻转或者排序后的版本。
>>> sorted('hello,world')
[',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>> reserved('hello,world')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'reserved' is not defined
>>> reversed('hello,world')
<reversed object at 0x950066c>

上面那个排序的返回了一个列表,但是这个翻转的却是那么一堆,还记得这个是神马东西么?对象,这个是说过一点的对象。具体是为什么,教材没有说,应该有点复杂。
在序列中也可以通过序列的分片来翻转,例如x=range(10)[::-1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库迭代查询作业 emp(eno, ename, salary, mgr),其中mgr是员工领导,设计约束:要求领导的工资不能低于他的下属平均工资。(注意,这是一个递归查询) 下面是一些样例数据 CREATE TABLE dbo.Employees ( empid INT NOT NULL PRIMARY KEY, mgrid INT NULL REFERENCES dbo.Employees, empname VARCHAR(25) NOT NULL, salary MONEY NOT NULL, CHECK (empid mgrid) ); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(1, NULL, 'David', $10000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(2, 1, 'Eitan', $7000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(3, 1, 'Ina', $7500.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(4, 2, 'Seraph', $5000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(5, 2, 'Jiru', $5500.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(6, 2, 'Steve', $4500.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(7, 3, 'Aaron', $5000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(8, 5, 'Lilach', $3500.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(9, 7, 'Rita', $3000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(10, 5, 'Sean', $3000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(11, 7, 'Gabriel', $3000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(12, 9, 'Emilia' , $2000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(13, 9, 'Michael', $2000.00); INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES(14, 9, 'Didi', $1500.00);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值