Python 奇技淫巧

  • 数组降维

    1
    2
    3
    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    [k for i in matrix for k in i]
    >>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 矩阵行列互转

    1
    2
    3
    a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    re_a = list(zip(*a))
    >>> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
  • 字典的键、值互换

    1
    2
    3
    4
    5
    6
    a = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    def reverse_dict(a):
    k = a.keys()
    v = a.values()
    new_dict = dict(zip(v, k))
    return new_dict
  • 合并一个list的相邻项

    1
    2
    3
    a = [1, 2, 3, 4, 5, 6]
    list(zip( a[::2], a[1::2] ))
    >>> [(1, 2), (3, 4), (5, 6)]
  • 反转字符串

    1
    2
    3
    a = 'python'
    a[::-1]
    >>> 'nohtyp'
  • 统计list中1的个数

1
2
3
a = [0, 1, 0, 0, 1, 0, 1, 0]
[i[0] for i in enumerate(a) if i[1] != 0]
>>>[1, 4, 6]

剁手标签打印机---brother P-touch P700

前言

标签打印机这东西,说起来是这样:用过的人都说爽,没用过的人觉得P用没有……

接触标签打印机也有日子了,前前后后买了3台:便携式的、迷你的、台式的。从书签到网线标志;从娃的玩具公交车站牌到合同文件夹,四处都有这东西的身影。

这里介绍下最推荐剁手的标签打印机:Brother P-Touch P700

就是这货:

继续阅读···

Sublime Text的多行列操作

Sublime Text是个非常好用的文本编辑器。操作如丝般顺滑,功能强大,速度飞快。

这里是Sublime Text的一个简单操作。适用Sublime Text2/3

如题:

1
2
3
4
5
6
7
8
9
10
{ img="xpk(main:image/face/f000.png)", code="呲牙" };
{ img="xpk(main:image/face/f001.png)", code="调皮" };
{ img="xpk(main:image/face/f002.png)", code="流汗" };
{ img="xpk(main:image/face/f003.png)", code="偷笑" };
{ img="xpk(main:image/face/f004.png)", code="再见" };
{ img="xpk(main:image/face/f005.png)", code="敲打" };
{ img="xpk(main:image/face/f006.png)", code="擦汗" };
{ img="xpk(main:image/face/f007.png)", code="猪头" };
{ img="xpk(main:image/face/f008.png)", code="玫瑰" };
{ img="xpk(main:image/face/f009.png)", code="流泪" };

这么一段代码,我想保留一个基本的对应表,形如:f008–玫瑰 。

Sublime可以优雅的解决这个。

  1. Ctrl+A 全选

  2. Ctrl+Shift+L 多行操作

  3. 左右移动,和操作一行一样的同时操作多行。当然,记得活用home end按钮。

Python的组合生成器

在python中,迭代器工具集合里面有一个比较好用的排列组合命令集合。

  • product 笛卡尔积
  • permutations 排列
  • combinations 组合,没有重复
  • combinations_with_replacement 组合,有重复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> import itertools
>>> for i in itertools.product('ABCD', repeat = 2):
... print i,
...
('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'A') ('B', 'B') ('B', 'C') ('B', 'D') ('C', 'A') ('C', 'B') ('C', 'C') ('C', 'D') ('D', 'A') ('D', 'B') ('D', 'C') ('D', 'D')
>>> for i in itertools.permutations('ABCD', 2):
... print i,
...
('A', 'B') ('A', 'C') ('A', 'D') ('B', 'A') ('B', 'C') ('B', 'D') ('C', 'A') ('C', 'B') ('C', 'D') ('D', 'A') ('D', 'B') ('D', 'C')
>>> for i in itertools.combinations('ABCD', 2):
... print i,
...
('A', 'B') ('A', 'C') ('A', 'D') ('B', 'C') ('B', 'D') ('C', 'D')
>>> for i in itertools.combinations_with_replacement('ABCD', 2):
... print i,
...
('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'B') ('B', 'C') ('B', 'D') ('C', 'C') ('C', 'D') ('D', 'D')

OneNote操作API接口

前言

OneNote是很好用的资料整理、撰写文章笔记的工具。

有很多时候,从晚上看到的比较好的资料都可以随手整理进去。

不过,全部手动是比较麻烦的,诸如知乎收藏夹之类的文章,平时点击了收藏后,如果不及时保存,有时候会被编辑掉,好文章变成无法访问,还是很郁闷的。

好在微软提供了office的开发接口,其中包含了OneNote。通过这些接口,可以将数据通过程序提交到Onenote中,增加分类、增删文章等等。

在阅读前,请熟读微软MSDN中的相关章节:

本文只是对以上文档的简单归纳汇总。

继续阅读···

Windows7/10 修改用户主目录

Windows重装的时候,%User%目录总是会被清空。每次备份很麻烦的。

这里就是简单的将%User%目录保存在D盘,然后做一个软连接链接到C盘下。

从此,重做系统就方便很多了。

  • 新做系统:

    在安装Windows7的过程中,要求输入用户名及密码的时候,先不如输入任何信息,按“Shift+F10”呼出DOS窗口,输入以下命令:

    1
    2
    3
    4
    5
    robocopy "C:\Users" "D:\Users"/E /COPYALL /XJ
    rmdir "C:\Users" /S /Q
    mklink /J "C:\Users" "D:\Users"
  • 已经存在的系统

  1. 关闭所有应用程序;

  2. 按一下“Windows”键,输入“计算机管理”之后按“Enter”,呼出“计算机管理器”;

  3. 鼠标点击“Administrator”,选择属性,而后在随后的对话框中去掉“帐户已禁用”之前的勾,而后关闭“计算机管理器”;

  4. 注销当前用户(注意,不是“切换用户”),而后以“Administrator”登录

  5. 打开命令行窗口,输入以下命令:

    1
    robocopy "C:\Users" "D:\Users" /E /COPYALL /XJ /XD "C:\Users\Administrator"
  6. 注销Administrator,重新用你的用户名登录Windows7,而后到“计算机管理器”里禁用Administrator;

  7. 以管理员身份打开一个DOS窗口,输入以下命令:

    1
    2
    rmdir "C:\Users" /S /Q
    mklink /J "C:\Users" "D:\Users"

切记C/D盘都得需要NTFS分区

Python 的常用 random 函数用法

  • 使用python random模块的choice方法随机选择某个元素
1
2
3
foo = ['a', 'b','c', 'd', 'e']
slice = random.choice(foo)
print slice
  • 使用python random模块的sample函数从列表中随机选择一组元素
1
2
3
foo =[1, 2, 3, 4, 5, 6, 7, 8, 9, 10
slice = random.sample(foo, 5#从list中随机获取5个元素,作为一个片断返回 
print slice
  • 使用python random模块的shuffle函数将列表重新排序
1
2
3
4
foo = [1, 2, 3, 4, 5, 6, 7]
slice = random.shuffle(foo) #洗牌
print slice
[7, 3, 2, 5, 6, 4, 1]