python

一、apply&applymap&map

  • apply 用在dataframe上,用于对row或者column进行计算;
  • applymap 用于dataframe上,是元素级别的操作;
  • map (其实是python自带的)用于series上,是元素级别的操作。
    f = lambda x: x.max() - x.min()lambda,临时函数
    df.apply(f,axis=0)axis决定作用的维度,axis=1作用在一行上,axis=0作用在一列上,默认axis=0
    f2 = lambda x: x+1 if x%2==0 else x
    df.applymap(f2)
    def sq(x): return x**2 m=map(sq,df['id'])
    list(m)
    list(m)
    map只返回一个迭代器,第一次list(m)后会把其中的值展示出来,但第二次list(m)之后就是空的了

二、type//dtypes//astype
type(a) 自带,返回变量的数据类型,如果a是dataframe就返回dataframe
b.dtypes 返回数组中元素的数据类型,对于dataframe是每一列的数据类型
a.astype(int) 更改数据类型,比如浮点改为int,或者用简单的方法更改:

  • int():将一个数值或字符串转换成整数,可以指定进制;
    float():将一个字符串转换成浮点数;
    str():将指定的对象转换成字符串形式,可以指定编码;
    chr():将整数转换成该编码对应的字符串(一个字符);
    ord():将字符串(一个字符)转换成对应的编码(整数)。

三、占位符&循环&倒置&排序

  • %d整数,%f小数,%%表示百分号,%s 字符串
    print('%d / %d = %.2f' % (a, b, a / b))%.2f保留两位有效函数
    d=str(input('d = ')) print('my name is %s' %(d))

\代表拆行
break:终止循环
continue:放弃本轮循环,开始新一轮循环
print(,end='')print函数,默认end='\n'换行符

字符串/list倒置
b = 123456
c = list(str(b))
c.reverse()

排序函数:
sorted(iterable[,cmp[,key[,reverse]]])
rt = sorted(example_list, key=lambda x: x*-1)
list.sort(L, key=None, reverse=False)
其中sorted函数的参数含义如下:

  • iterable -- 可迭代对象。
  • cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)
    sort函数的参数含义:L代表要排序,key代表的是用于排序的比较元素,reverse同上面一致。
    总体来看,sort只能用于列表的排序,效率也更快,消耗的内存较小,而且是直接对列表进行操作,所以会改变列表的原始值。而sorted函数的可以应用于各种数据结构,范围更加广泛,不过它会调用一个新的数据结构来进行操作,不会更改原数据,所以效率会略低一点。

四、字符串

  • + 字符串的拼接;
  • * 重复;
  • in,not in 判断一个字符串是否包含另外一个字符串,
    print('eo' in 'hello')False,不连续的
  • []截取,[::-1],倒序,[::2],间隔取
  • str1='abc123456'
    print(str1.find('bc'))返回首次出现的位置
    print(str1.find('bd'))返回-1,代表不存在
    str.rfind(str1,begin_pos,end_pos)返回指定字符串最后一次出现的位置
    print(str1.index('bd'))报错
    str.count('substr')统计字符出现的次数
    print(str1.center(50, '*')),将字符串居中,左右用*填充
    str.strip() 清除字符串左右两侧的空格,但中间的空格清除不了
  • 格式化输出除了占位符之外的另外两种方法:
    a, b = 5, 10
    print('{0} * {1} = {2}'.format(a, b, a * b))
    print(f'{a} * {b} = {a * b}')

五、列表
list1=[1,2,3,4]
enumerate函数

  • for index, elem in enumerate(list1):
    ····print(index, elem)

  • 添加元素:
    list1.append(2)末尾添加2
    list1.append(2,3)不行,一次只能添加一个
    list1.append([2,3]),末尾添加一个元素[2,3],变成[1,2,3,4,[2,3]]
    ///list1.insert(1,400)前面依次插入两个元素,一个数占一个位置[1,400,1,2,3,4]但3.7版本使用方式变了:
    list.insert(position,x)第一个参数是插入的位置,第二个参数是插入的元素,list1.insert(1,[2,3])=[1,[2,3],3,4]

  • 删除元素
    list1=[1,2,3,4,1,2,3]
    list1.remove(2)得到[1,3,4,1,2,3]只删除第一个遇到的元素
    list1.pop(position)按照位置删除元素

  • 切片
    所有切片都是包左不包右,[-3:-1]不能提取最后一个元素;

  • 生成式语法
    f=[x + y for x in 'ABCDE' for y in '1234567']x+y:两个字符拼接,后面等同于:
    f=[]
    for x in 'ABCDE':
    ····for y in '1234567':
    ········f.append(x+y)
    f1=(x**2 for x in range(1,1000))生成器
    f=[x**2 for x in range(1,1000)]list
    生成器的内存占用远远小于list(sys.getsizeof()查看内存)
    通过yield将普通函数改造成生成器
    def fib(n):
    ····a, b = 0, 1
    ····for _ in range(n):
    ········a, b = b, a + b
    ········yield a
    def main():
    ····for val in fib(20):
    ········print(val)
    if __name__ == '__main__':
    ····main()
    只运行fib函数的话,返回的是一个生成器

六、集合

  • 没有重复元素
    set1={1,2,3,4,5,1}
    print(set1) >>{1,2,3,4,5}
    set2=set( (1,2,4,3,2,1))or set2=set( [1,2,4,3,2,1])
  • 元素的增减
    set1.add()
    set1.update([]) or set1.update(()) 作用等同于add,
    set1.update(9)不行,
    set3=set([1,2,[1,2],[3,4]]) !!!unhashable type: 'list'
    set1.discard(5) & set1.remove(5) 删除元素
    set1.pop()返回的是被删除的在第一位的元素,之后的set1没了一个元素
  • 运算
    交集:&
    并集:|
    差集:-
    或否:^ ,返回只存在于一个集合之中的元素的集合
    判断子集和超集
    print(set2 <= set1),print(set2.issubset(set1))
    print(set1 >= set2),print(set1.issuperset(set2))
  • !!!对python而言
    其一, 在不加括号时候, and优先级大于or
    其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y
    第三, x and y 的值只可能是x或y. x为真就是y, x为假就是x

七、字典
key:value
dict.keys()返回key的列表

  • 构造字典的方法:
    1)dict={key:value,...}
    2) dict2=dict(key=value,...),如item=dict(one=1,two=2)其中key不能加引号
    3)zip函数items2 = dict(zip(['a', 'b', 'c'], '123'))
    4)推导式item3={num:num*2 for num in range(0,10)}
  • 更改字典的值
    1)dict.update(key=value,...)可以修改现有key对应的value,也可以添加新的key-value对
    2)items2.popitem()返回被删除的最后一个位置的元素
    3)items.pop(key1,key2...)按key删除,返回被删除的values值
    4)dict.clear()清空
  • 返回最大值对应的key:max(items2,key=items2.get)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容