python常用的几个功能/模块
1 求list的子集
[code]import itertools # 有序 print(list(itertools.permutations([1, 2, 3, 4], 2))) # [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] # 无序 print(list(itertools.combinations([1, 2, 3, 4], 2))) # [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
2 求两个集合的交集、并集
[code]a=[1,3,5] b=[1,2,3] set(a) & set(b) #交集 set(a) | set(b) #并集 set(a) - set(b) #差集(得到的结果是set([5]))
3 排列组合
1)一个list里面取n个值(无序,组合):
[code]import copy def combine(l, n): answers = [] one = [0] * n def next_c(li=0, ni=0): if ni == n: answers.append(copy.copy(one)) return for lj in range(li, len(l)): # python2 和python3一个用range,一个用xrange one[ni] = l[lj] next_c(lj + 1, ni + 1) next_c() return answers list = [1, 2, 3, 4, 5] sublists = combine(list, 3)
输出的结果为( ):
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]
2)一个list里面取n个值(有序,排列,此处以n = 3为例):
[code]list = [1, 2, 3, 4, 5] sublists = [] for i in range(len(list)): for j in range(len(list)): if j == i: continue else: for k in range(len(list)): if k == j or k == i: continue else: sublists.append([list[i], list[j], list[k]])
输出的结果为( ):
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 2], [1, 3, 4], [1, 3, 5], [1, 4, 2], [1, 4, 3], [1, 4, 5], [1, 5, 2], [1, 5, 3], [1, 5, 4], [2, 1, 3], [2, 1, 4], [2, 1, 5], [2, 3, 1], [2, 3, 4], [2, 3, 5], [2, 4, 1], [2, 4, 3], [2, 4, 5], [2, 5, 1], [2, 5, 3], [2, 5, 4], [3, 1, 2], [3, 1, 4], [3, 1, 5], [3, 2, 1], [3, 2, 4], [3, 2, 5], [3, 4, 1], [3, 4, 2], [3, 4, 5], [3, 5, 1], [3, 5, 2], [3, 5, 4], [4, 1, 2], [4, 1, 3], [4, 1, 5], [4, 2, 1], [4, 2, 3], [4, 2, 5], [4, 3, 1], [4, 3, 2], [4, 3, 5], [4, 5, 1], [4, 5, 2], [4, 5, 3], [5, 1, 2], [5, 1, 3], [5, 1, 4], [5, 2, 1], [5, 2, 3], [5, 2, 4], [5, 3, 1], [5, 3, 2], [5, 3, 4], [5, 4, 1], [5, 4, 2], [5, 4, 3]]
4 斐波那契数列(变形,跳台阶问题)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
dp
=dp[n−1]+dp[n−2]
[code]# -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code here ''' n = 1 : 1 n = 2 : 1+1 = 2 n = 3 : dp[n-2]+dp[n-1] ''' if number == 1 or number == 2: return number dp = [1,2] for i in range(number-2): dp.append(dp[-1]+dp[-2]) return dp[-1]
5 字典
[code]# -*- coding: utf-8 -*- keys = ['a', 'b', 'c'] values = [1, 2, 3] dictionary = dict(zip(keys, values)) print dictionary """ 输出: {'a': 1, 'c': 3, 'b': 2} """ print(dictionary['a'])
6 创建一个1到n的list
[code]list=range(1,n+1)
7 list/string逆序列
[code]>>> a = '1232' >>> a[::-1] '2321'
8 list/string每隔n个元素取一个
[code]list1[::2] #每隔一个元素取一个
如list1 = [1,2,3,4,5,6], 则list1[::2] = [1,3,5]
阅读更多- Python os模块常用部分功能总结
- Python中os模块常用功能--os.walk()
- Python生成随机数与random模块中最常用的几个函数
- ASP常用的几个功能模块
- Python os模块常用功能
- ASP常用的几个功能模块封装成函数调用(登录验证,状态切换。。) http://www.tsingfeng.com/archives/?article-89.html
- Python os模块常用部分功能总结
- ASP常用的几个功能模块
- Python os模块常用部分功能
- 常用的python模块功能和下载地址
- python圣斗士修炼(十五):几个常用模块
- Python学习——os模块中几个常用的方法
- python datetime和calendar模块常用功能
- Python os模块常用部分功能总结
- 常用的python模块功能和下载地址
- Python 常用功能模块介绍
- Python os模块常用部分功能总结
- Python OS模块常用功能 中文图文详解
- 举例详解Python中threading模块的几个常用方法
- Python os模块 常用功能小结