case

001

#交换两个变量值    
a,b = b,a    
    
#去掉list中的重复元素    
old_list = [1,1,1,3,4]    
new_list = list(set(old_list))    
    
#翻转一个字符串    
s = 'abcde'    
ss = s[::-1]    

#用两个元素之间有对应关系的list构造一个dict    
names = ['jianpx', 'yue']    
ages = [23, 40]    
m = dict(zip(names,ages))    
    
#将数量较多的字符串相连,如何效率较高,为什么    
fruits = ['apple', 'banana']    
result = ''.join(fruits)    
    
#python字符串效率问题之一就是在连接字符串的时候使用‘+’号,
例如 s = ‘s1’ + ‘s2’ + ‘s3’ + ...+’sN’,总共将N个字符
串连接起来, 但是使用+号的话,python需要申请N-1次内存空间, 
然后进行字符串拷贝。原因是字符串对象PyStringObject在python
当中是不可变 对象,所以每当需要合并两个字符串的时候,就要重新  
请一个新的内存空间 (大小为两个字符串长度之和)来给这个合并之后  
的新字符串,然后进行拷贝。 所以用+号效率非常低。建议在连接字符串  
的时候使用字符串本身的方法 join(list),这个方法能提高效率,原
因是它只是申请了一次内存空间, 因为它可以遍历list中的元素计算出
总共需要申请的内存空间的大小,一次申请完。

002

>>> D = {'a':1,'b':2,'c':3,'d':4}    
>>> D.items()                       #一次性取出所有    
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]    
>>> D.iteritems()                   #迭代对象,每次取出一个。用for循环遍历出来;    
<dictionary-itemiterator object at 0x00000000026243B8>    
>>> for i in D.iteritems():    
...   print i,    
...    
('a', 1) ('c', 3) ('b', 2) ('d', 4)    
>>> for k,v in D.iteritems():    
...   print k,    
...    
a c b d    
总结:   
1. 一般iteritems()迭代的办法比items()要快,特别是数据库比较大时。  
2. 在Python3中一般取消前者函数 

003

这是代码结构设计的问题,模块依赖和类依赖  
如果老是觉得碰到循环引用,很可能是模块的分界线划错地方了。可能是把应该在一起的东西硬拆开了,可能是某些职责放错地方了,可能是应该抽象的东西没抽象  
总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工  
  
采取办法,从设计模式上来规避这个问题,比如:  
1. 使用 “__all__” 白名单开放接口  
2. 尽量避免 import  

004

#python 类型转换
函数                             描述  
int(x [,base])              将x转换为一个整数  
long(x [,base] )            将x转换为一个长整数  
float(x)                    将x转换到一个浮点数  
complex(real [,imag])       创建一个复数  
str(x)                      将对象 x 转换为字符串  
repr(x)                     将对象 x 转换为表达式字符串  
eval(str)                   用来计算在字符串中的有效Python表达式,并返回一个对象  
tuple(s)                    将序列 s 转换为一个元组  
list(s)                     将序列 s 转换为一个列表  
set(s)                      转换为可变集合  
dict(d)                     创建一个字典。d 必须是一个序列 (key,value)元组。  
frozenset(s)                转换为不可变集合  
chr(x)                      将一个整数转换为一个字符  
unichr(x)                   将一个整数转换为Unicode字符  
ord(x)                      将一个字符转换为它的整数值  
hex(x)                      将一个整数转换为一个十六进制字符串  
oct(x)                      将一个整数转换为一个八进制字符串 

#list和tuple如何转换
#两者可以直接相互转换
t = (1,2,3)
tt = list(t)
tt = tuple(tt)

005编码问题

#先来看个小例子:
print(u'中文')
print('中文')

2
6


006

#Python判断当前用户是否是root
import os  
if os.getuid() != 0:    # root账号的uid=0  
    print os.getuid()  
    print 'Should run as root account'  
else:  
    print 'Hello, Root!'  

#

007默写尽可能多的str对象的方法

#方法                                   #描述    
-------------------------------------------------------------------------------------------------    
S.capitalize()                          #返回首字母大写的字符串的副本    
S.center(width[,fillchar])              #返回一个长度为max(len(S),width),S居中,两侧fillchar填充    
S.count(sub[,start[,end]])              #计算子字符串sub的出现次数,可将搜索范围限制为S[start:end]    
S.decode([encoding[,error]])            #返回使用给定编码方式的字符串的解码版本,由error指定错误处理方式    
S.endswith(suffix[start[,end]])         #检查S是否以suffix结尾,可给定[start:end]来选择匹配的范围    
S.expandtabs([tabsize])                 #返回字符串的副本,其中tab字符会使用空格进行扩展,可选择tabsize    
S.find(sun[,start[,end]])               #返回子字符串sub的第一个索引,不存在则为-1,可选择搜索范围    
S.index(sub[,start[,end]])              #返回子字符串sub的第一个索引,不存在则引发ValueError异常.    
S.isalnum()                             #检查字符串是否由字母或数字字符组成    
S.isalpha()                             #检查字符串是否由字母字符组成    
S.isdigit()                             #检查字符串是否由数字字符组成    
S.islower()                             #检查字符串是否由小写字母组成    
S.isspace()                             #检查字符串是否由空格组成    
S.istitle()                             #检查字符串时候首字母大写    
S.isupper()                             #检查字符串是否由大写字母组成    
S.join(sequence)                        #返回其中sequence的字符串元素由S连接的字符串    
S.ljust(width[,fillchar])               #返回S副本左对齐的字符串,长度max(len(S),W),右侧fillchar填充    
S.lower()                               #返回所有字符串都为小写的副本    
S.lstrip([char])                        #向左移除所有char,默认移除(空格,tab,\n)    
S.partition(seq)                        #在字符串中搜索seq并返回    
S.replace(old,new[,max])                #将new替换olad,最多可替换max次    
S.rfind(sub[,start[,end]])              #返回sub所在的最后一个索引,不存在则为-1,可定搜索范围S[start:end]    
S.rindex(sub[,start[,end]])             #返回sub所在的最后一个索引,不存在则会引发ValueError异常。    
S.rjust(width[,fillchar])               #返回S副本右对齐的字符串,长度max(len(S),W),左侧fillchar填充    
S.rpartition(seq)                       #同Partition,但从右侧开始查找    
S.rstip([char])                         #向右移除所有char,默认移除(空格,tab,\n)    
S.rsplit(sep[,maxsplit])                #同split,但是使用maxsplit时是从右往左进行计数    
S.split(sep[,maxsplit])                 #使用sep做为分割符,可使用maxsplit指定最大切分数    
S.zfill(width)                          #在S的左侧以0填充width个字符    
S.upper()                               #返回S的副本,所有字符大写    
S.splitlines([keepends])                #返回S中所有行的列表,可选择是否包括换行符    
S.startswith(prefix[,start[,end]])      #检查S是否以prefix开始,可用[start,end]来定义范围    
S.strip([chars])                        #移除所有字符串中含chars的字符,默认移除(空格,tab,\n)    
S.swapcase()                            #返回S的副本,所有大小写交换    
S.title()                               #返回S的副本,所有单词以大写字母开头    
S.translate(table[,deletechars])        #返回S的副本,所有字符都使用table进行的转换,可选择删除出现在deletechars中的所有字符 

008

# 现在有一个dict对象adict,里面包含了一百万个元素,查找其中的某个元素的平均需要多少次比较
O(1)  哈希字典,快速查找,键值映射,键唯一! 

#有一个list对象alist,里面的所有元素都是字符串,编写一个函数对它实现一个大小写无关的排序
words = ['This','is','a','dog','!']  
words.sort(key=lambda x:x.lower())  
print words  

#打乱一个排好序的list对象alist
# random模块中的shuffle(洗牌函数)  
import random  
alist = [1, 2, 3, 4]  
random.shuffle(alist)     
print alist  

# 有一个长度是101的数组,存在1~100的数字,有一个是重复的,拿重复的找出来
# Python中,主要是拿count(i) ==2的找出来即可,再利用列表推导式  
>>> l = [1, 2, 3, 4, 2]  
>>> tmp = []  
>>> [tmp.append(i) for i in l if l.count(i) == 2]  
[None, None]  
>>> tmp  
[2, 2]  
>>> set(tmp)  
set([2])  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 《机械制图》10%(50+30=80) 单项选择题 Q-B1-E-001 L 基本幅面不能满足需要而采用加长幅面时...
    开源时代阅读 3,753评论 1 1
  • 这本书有一个很奇妙的构思。前半部分,可能看起来有点无聊,讲述的是哲学发展史,一些历史上的哲学阶段的观点和人物...
    小小的分享啊阅读 250评论 0 1
  • 在大多数人看来,一向以理性思维居多的男性可能更适合理财,而偏情绪化、偏保守的女性,则会被扣以不善投资的帽子。那么女...
    8846482d58c9阅读 153评论 0 1
  • 天之道,其犹张弓与?高者抑下,下者举之,有余者损之,不足者补之。天之道,损有余而补不足。人之道,则不然,损不足以奉...
    Josaber阅读 947评论 0 0
  • 成都雅居乐纳米汗蒸养生会所特邀成都归藏居陈姝妃老师, 带我们一起探索 一个男人如何拥有强大生命能量! 一个女人如何...
    归藏居阅读 630评论 0 0