资讯专栏INFORMATION COLUMN

python tips(2)

worldligang / 3169人阅读

摘要:函数的使用一般的字符串组合操作都建议使用字符串操作经常使用的就另外还有里面可以写成一个列表解析的形式而不是从列表中删除多个相同的元素用是不行的只能删除从左到右找到的第一个元素后面的不会删除自认为两种比较好的方式如下或者随机生成位字符串引用类

join函数的使用

一般的字符串组合操作都建议使用join, 字符串操作经常使用的就join, split, replace, 另外还有partition
join里面可以写成一个列表解析的形式

m = map(str, range(9))
",".join(x for x in m if x != "3")

# 而不是
",".join([x for x in m if x != "3"])
从列表中删除多个相同的元素

list.remove是不行的, 只能删除从左到右找到的第一个元素, 后面的不会删除
自认为两种比较好的方式如下

m = ["a", "b", "c", "a"]
m = filter(lambda x: x !="a", m)

或者

m[:] = (x for x in m if x != "a")
随机生成n位字符串
import random
import string

rand_str = "".join([random.choice(string.letters+string.digits) for _ in xrange(n)])
引用类型的问题 函数参数

函数默认参数,只在定义时参数求值了一次,函数的多个调用将使用同一个可变参数

def test(data, x=[]):
    x.append(data)
    return x
print test(3)
# [3]
print test(4)
# [3, 4]
dict.fromkeys设置默认值的问题

和函数参数问题一样,多个键值对应的value将调用同一个列表。设置为{}自然也是一样的结果

>>> a = dict.fromkeys("bc", [])
>>> a["b"].append(6)
>>> a
{"b": [6], "c": [6]}
多个变量声明

一般会有声明多个空list和空dict的需求
将导致多个变量共享同一个[]{}的错误的做法

a = b = []
c = d = {}

正确的方式

a, b = [], []
# for a lot of var
c, d, e, f = [{} for _ in xrange(4)]

其它int, str, bool等没有此问题,可直接写成

a = b = True

del的时候一次可以删除多个

>>> a = range(3)
>>> del a[2], a[0]
>>> a
[1]
切片操作

可以用-1来反转列表

>>> a = range(7)
>>> a[::-1]
[6, 5, 4, 3, 2, 1, 0]
>>> a[::2]
[0, 2, 4, 6]

用切片删除某一段序列,等同于del a[1:4]

>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> a[1:4] = []
>>> a
[1, 5, 6, 7]

去除偶数索引

>>> a = [0, 1, 2, 3, 4, 5, 6, 7]
>>> del a[::2]
>>> a
[1, 3, 5, 7]
关于省略号

主要用于多维矩阵中,减少定位操作时的复杂度,用得不多,更仔细的说明见这里

>>> class C(object):
...  def __getitem__(self, item):
...   return item
...
>>> C()[1:2, ..., 3]
(slice(1, 2, None), Ellipsis, 3)
文件操作 一次读取整个文件

使用二进制模式,如rb模式, 使用r则只能读取到一部分

with open(path, "rb") as f:
    return f.read()
按行读取

将文件对象看错iterator

with open(path, "r") as f:
    for line in f:
        print line

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37742.html

相关文章

  • ☀️苏州程序大白一文从基础手把手教你Python数据可视化大佬☀️《❤️记得收藏❤️》

    ☀️苏州程序大白一文从基础手把手教你Python数据可视化大佬☀️《❤️记得收藏❤️》 目录 ?️‍?开讲啦!!!!?️‍?苏州程序大白?️‍??博主介绍前言数据关系可视化散点图 Scatter plots折线图强调连续性 Emphasizing continuity with line plots同时显示多了图表 数据种类的可视化 Plotting with categorical da...

    Drinkey 评论0 收藏0
  • Python Tips

    摘要:的三种数据类型字典列表元组,分别用花括号中括号小括号表示。约等于上句,可能是因为自定义变量名与内部函数或变量同名了。下,默认路径一般为。的日志模块中计时器定时器计划任务,。对象的问题怎样忽略警告不打印烦人的警告打印到终端同时记录到文件。 Python Enhancement Proposal。(PEP,Python增强建议书) Python之禅(import this) Pytho...

    Reducto 评论0 收藏0
  • 简析前端学习python3的基础

    摘要:元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。 以下是整理的JavaScript和python的基础区别的整理: 字符串、列表、元组、字典、集合、函数 字符串 声明一个字符串 python str = 123 str = 123 Tips: 如果是三个引号的话,那么在py中就是注释的意思 ...

    summerpxy 评论0 收藏0
  • 简析前端学习python3的基础

    摘要:元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。 以下是整理的JavaScript和python的基础区别的整理: 字符串、列表、元组、字典、集合、函数 字符串 声明一个字符串 python str = 123 str = 123 Tips: 如果是三个引号的话,那么在py中就是注释的意思 ...

    LiveVideoStack 评论0 收藏0
  • python tips

    摘要:中的可以起到与此处相同的效果判断奇数自然是使用位操作最快了删除要删除的数量较多超多一半的话,建议重新生成如果数量较少,在和都可以的情况下,稍快一些 给dict设置默认值 这样能设置所有key的默认值为[],包括新添的key from collections import defaultdict context = defaultdict(list) setdefault一次只能设置一个...

    fuchenxuan 评论0 收藏0

发表评论

0条评论

worldligang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<