使用awk交换第一列和第二列:
awk ‘{temp=$2; $2=$1; $1=temp; print}’
或者指定制表符为分割符:
awk -F'[\t]’ ‘{temp=$2; $2=$1; $1=temp; print}’
另外ZZ一些学习资料:
from: http://meisw.51099.com/category-30-1.html
继续阅读
使用awk交换第一列和第二列:
awk ‘{temp=$2; $2=$1; $1=temp; print}’
或者指定制表符为分割符:
awk -F'[\t]’ ‘{temp=$2; $2=$1; $1=temp; print}’
另外ZZ一些学习资料:
from: http://meisw.51099.com/category-30-1.html
继续阅读
以前小时候做过很多梦,大多在醒来以前就忘记了,于是那时候我很得意的留下一句话:”以前做过大多的梦,现在都散了”,想想确实不假,因为在我醒来就散了。
长大以后,发生的事情越来越多,事情也越来越需要自己度量着办,想不到脑力消耗大了以后,对梦的记忆力却回来了,果然人生还是有得有失。
言归正传吧,昨晚做了一个梦。
梦里出现了很多人,我自己,珞珈山的路,公交车,还有一些熟悉但是我忘记名字的人,我还记着一个人,和另一个人,一个人我在梦里见到,一个人在梦里毫无踪影。
我回到武汉,在珞珈山边走了很久的路,似乎在找一个寄宿一宿的地方,有幸的是终于找到了,第二天早上起来,吃过早饭离开住宿的地方,我不知道我要去寻找什么,却知道我该往哪里走。
顺着路弯弯曲曲向前,脑海里逐渐又浮现了一些回想起来的事情,上回在人人看到,虽然我毫无意识,但是潜意识里还是记住了,在梦里,我知道,我去找他了。
在梦里思考很奇怪,但是我确实在想着什么,不过确实全都忘记了,只记得到了他住的地方,外面种着小树,摆着餐桌,屋里挺大,她也在里面。
可能梦里显现出很多我一直没有忘记的事情吧。 可是时间过去了这么久,该淡的总该淡了,不该淡的也该不要脸的淡了,我做错了很多事情,似乎越来越错,然后我终于可以很放心的说,我说的都是错的,我做的都是错的。
综上,在深圳的这段时间里,随着室友一个个离开,一个人的日子竟然给我过出了寂寞的感觉,真是很神奇,每当夜晚里我一个人面对寂寞不堪一击的时候,我是不是该想,这就是你向往的生活吗?
如果不是,告诉我你想什么,我帮你实现它。
2012年2月28日
—————-
谨以此篇文章留念,虽然毫无主题和意义,希望曾经的,现在的,我的朋友过的很好。
因为我过的挺不好的,如果你们过的不好,麻烦悄悄告诉我,知道你们也过的不好我就好多了。(开个玩笑的)
我很小的时候说过,自己从来不会失败,因为我根本不认同失败。可惜长大了,那个不要脸的我也不知道死哪里去了。
如今回想起来,那时候的自己居然比现在的我还要厉害,真是不能忍。
所以我也得装一装,老子从不会放弃,就算输的和头猪一样,想让我放弃努力,真是扯淡。
1. python默认浅拷贝,即引用复制。
2. 注意,跨越数据层与计算层的实例,要注意使用后手动释放。
否则若计算层引用函数未退出,而数据层更新,则旧有的实例不会释放,造成内存泄漏。
3. 下面是使用copy来实现深拷贝的例子
>>> a = {}
>>> a[0] = set()
>>> a[0].add('1')
>>> a[0]
set(['1'])
>>> a[1] = a[0]
>>> a[1]
set(['1'])
>>> a[1].add('2')
>>> a[1]
set(['1', '2'])
>>> a[0]
set(['1', '2'])
>>> import copy
>>> a[2] = copy.deepcopy(a[1])
>>> a[2]
set(['1', '2'])
>>> a[2].add('3')
>>> a[2]
set(['1', '3', '2'])
>>> a[1]
set(['1', '2'])
>>> a[0]
set(['1', '2'])
>>>
原文:http://blog.jobbole.com/11761/
这件事仿佛发生在昨天一样令我印象深刻。那是2000年,帕尔加斯博士站在我们的数据结构课教室的前方,讲解着一些y型数据结构的内容,同时把一个SSH 的窗口投影在我们前面的墙上。有人提出了一个问题,随后他用下面的话回答道:“如果你想成为一个真正的计算机科学家,你就得开始用 Vi 。”我感觉他在说这些话的时候还在微微笑着,而事后发现他说的这个观点根本不对。 但是由于年轻并且易受影响,当时的我回到宿舍后立刻了开始了自学如何使用 Vi 。我度过了很长一段艰苦的时间,但是当我开始变得对其熟悉的时候,我意识到我用 Vi 会干的非常快。
《去月球》其实是一位垂暮老人的一个愿望。
从周末下载开始断断续续的玩,终于在2月14日晚上看到了结局。
之后反而有种坦然的感觉,
很长一段时间以来,我遇到了许多人,许多事,有些事情我知道是错的,却不知道做错的问题在哪里。
也许根本不是什么的答案,而是问题本身就不存在,只不过是我无聊杜撰的罢了。
所有的,都是幻觉,所有的,都不是真正的爱情。
假如你想问爱情是什么,也许《To The Moon》里会有答案。
但是我不是任何答案,我只是我自己,与你们无关。
[audio:http://storage.live.com/items/174EF12B785B7835!109?filename=04%20For%20River%20-%20Piano%20(Sarah%20&%20Tommy's%20Version).mp3|titles=04_For_River]
1. MIT-Scheme 是Lisp语言的一类分支,是SICP(计算机程序的构造和解释)的教学语言。
2. 下载地址参考GNU网站,此外注意查阅文档(HTML版),和一个简单的介绍(豆丁)。
3. 晚上折腾了一会,发现Emacs的分支Edwin用的不是很顺手,明天有空把说明书看看。
附上一个牛顿法求平方根Scheme代码:
(define (square x) (* x x))
(define (abs x)
(if (< x 0) (- x) x))
(define (average x y)
(/ (+ x y) 2))
(define (improve guess x)
(average guess (/ x guess)))
(define (good-enought? guess x)
(< (abs (- (square guess) x)) 0.001))
(define (sqrt-iter guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x)))
(define (sqrt x))
(sqrt-iter 1.0 x)
后记: 第二天继续尝试Edwin, RTFM。
这里可以参考RPI的Scheme教学文档。
比起生硬的说明文档,这个好看的多,尤其是老师说“I believe some students in previous years have gotten it running on a Mac, but I don't know any details.” 的时候我笑的不行了。
综上,文档里建议结合GNU-Emacs使用Scheme,不过我有些想把他转接到vim上去。
起因是之前面百度,被面试官鄙视在了原地归并,后来翻了翻代码,其实不难,可能是当时没有突破思维把。
刚刚hzh又提起原地归并,发现自己都忘的差不多了,坑爹,还是写下来。
void merge(int * v, int n, int pos) // 数组v, 有n个元素,从pos位置开始分割,前后两段分别有序
{
int fir = 0, sec = pos;
while (fir < sec && sec < size) {
while (fir < sec && v[fir] <= v[sec]) fir ++;
int max_move = 0;
while (sec < size && v[fir] > v[sec]) sec++, max_move++; // 核心,用来统计这一段元素到底该插到什么地方。
exchange(&v[fir], sec-fir, sec-fir -max_move) ; // 特殊的放置函数,后面会举个栗子的
fir += max_move;
}
}
例如: 1 2 6 7 | 4 5 9 8 n=8 pos = 4
首次循环停止时, fir = 2 , 因为 v[2] = 6 > v[4] = 4,
随后 sec 和 max_move 加了两次,因为 v[2] = 6 < v[6] = 9
传入 exchange的参数为 (&v[2], 4, 2)
表示从第三个位置开始(也就是6在的位置),之后的4个元素(包括它),整体循环右移2次,
然后就变成了 1 2 4 5 6 7 9 8, fir + max_move, 移到它的新位置,后面的特例就不再分析了。
最后这个方法的复杂性就落在了 exchange上,不过如果用链表来实现就很低了,想来当时的面试官是想这样考我的。。
for id in id_list:
if ooxx(id):
id_list.remove(id)
continue
这样的写法是不合适的,因为当remove掉id时,目前的指针会指向下一个元素,而continue会跳过他
所以这样的现象是,一旦remove,就会跳过下一个元素
可以考虑这样实现
for id in id_list:
if ooxx(id):
remove_list.append(id)
continue
...
for id in remove_list:
id_list.remove(id)