搬运工又来了,从自己的logdown博客搬东西过来了。
厦门已入秋,天气已凉,看着窗外高架上奔驰的车辆,突然觉得自己好久没写博文了,该动动手了。今天的主题还是分两块,一块是随笔,说说沉默成本,另一块则是把之前python学习的一些笔记整理下发出来。
有时候当做一个事情已经投入很大一块成本,这时候想放弃就是一件难事,就算知道他是错的。
举个栗子吧,前天和同事去吃自助,感觉很一般,没那么好吃,但是钱都花了还是自助,不好吃也得吃回本。又比如,有时候等的士,等了20分钟发现这个路段很难打的,但是已经等了这么久了,走了不是白等,干脆继续等下去。这些都是沉没成本!经常困扰我们的问题就是“我们已经投入了这么多了……”“我们已经走了这么远了……”“我们已经牺牲了这么多了……”。纠结于过去的沉没成本很容易让人犹豫不决。
有时候有些项目,进行了一半,需求、设计全都做完了,编码已经开始了,突然被领导喊停,也就是不纠结与沉没的成本,这也许是对的,这也是领导的决策,但做的人肯定心里还是会耿耿于怀。我也不清楚这些项目坚持下去能否成功,毕竟有的项目中还是有些亮点让我觉得他有价值的。放弃只是出于公司整体策略、人力物力等考虑。
坚持了最后失败了那是固执不懂变通跪在坚持,中途转向失败了,那就是不够坚持。坚持了成功了,那就是跪在坚持,转向了成功了那就是懂得取舍。可见决策是多么奇妙而又结果导向的事情。
总之我想说的就是,决策时候别太在乎那块已经投入的成本,单纯判断事情的对错是非去做决定吧。程序员就是烦,这么一句话就balabala了这么多,开始进入正题。
学习python,我找了挺多书的,主要是Head First Python(其实我很喜欢这个系列的书的),昨天伯乐在线的编程大赛的语言识别器,我也用学到的python做了个版本,之后有机会也发出来和大家分享下。
版本:python2.6
系统:centos
1、python是一种动态范型的语言。
比如他的命名可以很灵活:movies = [“了不起的盖茨比”,”环太平洋”,”摩登时代”],不用声明变量类型,这样就定义了一个列表。
2、而列表中可以用的方法很多:
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', '\xe7\x8e\xaf\xe5\xa4\xaa\xe5\xb9\xb3\xe6\xb4\x8b', '\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3']
“**打印出列表**
>>> print(movies[0])
了不起的盖茨比
** “打印出列表中某个索引的值**
>>> movies.pop()
'\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3'
**“堆栈推出最尾巴的一个元素**
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', '\xe7\x8e\xaf\xe5\xa4\xaa\xe5\xb9\xb3\xe6\xb4\x8b']
>>> movies.append("摩登时代")
**“在最尾加上**
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', '\xe7\x8e\xaf\xe5\xa4\xaa\xe5\xb9\xb3\xe6\xb4\x8b', '\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3']
>>> movies.extend(["god is gril","roma love"])
**“合并上另外一个列表**
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', '\xe7\x8e\xaf\xe5\xa4\xaa\xe5\xb9\xb3\xe6\xb4\x8b', '\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3', 'god is gril', 'roma love']
>>> movies.remove("roma love")
**“移除指定索引的列表元素**
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', '\xe7\x8e\xaf\xe5\xa4\xaa\xe5\xb9\xb3\xe6\xb4\x8b', '\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3', 'god is gril']
>>> movies.insert(1,1989)
**“在指定位置插入**
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', 1989, '\xe7\x8e\xaf\xe5\xa4\xaa\xe5\xb9\xb3\xe6\xb4\x8b', '\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3', 'god is gril']
另外还有很多方法,比如len(movies)是获取列表的长度,if "god is girl" in movies:可以判断列表中是否有某个值
三、说到列表就顺便说map(我也不知道python中怎么叫他,反正我用java习惯这么叫的了)
translate = {'./langs/eng_com.dic':'English','./langs/de.dic':'Deutsch','./langs/fr.dic':'French','./langs/portugueseU.dic':'PortugueseU','./langs/es.dic':'Spaish'};
这就是一个map,而底层的switch case,其实也就是用这个实现的,比如,translate.get(filename),也就相当于switch(filename) case 'xxx':xxx; case 'yyy' yyy;
四、for 循环
for 目标标示符 in 列表 :
列表处理代码
注意:python是一个很讲究缩进的程序语言,同级的列表处理代码一定要缩进方式相同。
>>> for movie in movies:
... print(movie);
...
了不起的盖茨比
1989
环太平洋
摩登时代
god is gril
**python的for循环很灵活,比如我用for data in open(filename):这样data就是文件中每一行的内容,诸如此类的应用例子很多 **
五、while循环
具体使用方式大概类似于for,相比之下,没有特殊操作,都用for
>>>
count = 0;
while count < len(movies):
... print(movies[count])
... count=count+1
...
了不起的盖茨比
环太平洋
摩登时代
六、单引号和双引号
python中单引号和双引号作用相同,如果要打印双引号可以用\字符或者单引号方式
>>> print('"ddd"')
"ddd"
>>> print("\"ddd")
"ddd
七、大小写
python是敏感型语言,msg 和MSG是不同的对象
八、列表中可以嵌套列表
>>> movies = ["了不起的盖茨比",2013,["小李二多",["A","B","C"]],"摩登时代",2012,["徐挣",["D","E"]]]
>>> print(movies)
['\xe4\xba\x86\xe4\xb8\x8d\xe8\xb5\xb7\xe7\x9a\x84\xe7\x9b\x96\xe8\x8c\xa8\xe6\xaf\x94', 2013, ['\xe5\xb0\x8f\xe6\x9d\x8e\xe4\xba\x8c\xe5\xa4\x9a', ['A', 'B', 'C']], '\xe6\x91\xa9\xe7\x99\xbb\xe6\x97\xb6\xe4\xbb\xa3', 2012, ['\xe5\xbe\x90\xe6\x8c\xa3', ['D', 'E']]]
>>> print(movies[2][1][1])
B
>>> print(movies[5][1][1])
E
九、if
If 条件:
True处理代码
Else:
False处理代码
**注意,python中的True和False首字母要大写**
十、isinstance
类似java的instanceof
>>> isinstance(movies,list)
True
十一、BIF内建函数
比如有open() len() isinstance()等。
用这个命令去查看,dir(__builtins__)
列表中的东西可以用help命令去查看,比如
Help(isinstance)
十二、定义函数
def 函数名 (参数):
函数代码组
比如
>>> def printList (theList):
... for obj in theList:
... if(isinstance(obj,list)):
... printList(obj)
... else:
... print(obj)
...
>>> printList(movies)
了不起的盖茨比
2013
小李二多
A
B
C
摩登时代
2012
徐挣
D
E
今天就先到这里。可能有点乱,等全部写完以后做个目录吧。