在python中,如i=
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中,如i=相关的知识,希望对你有一定的参考价值。
归并排序
归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并。
具体的归并排序就是,将一组无序数按n/2递归分解成只有一个元素的子项,一个元素就是已经排好序的了。然后将这些有序的子元素进行合并。
合并的过程就是 对 两个已经排好序的子序列,先选取两个子序列中最小的元素进行比较,选取两个元素中最小的那个子序列并将其从子序列中
去掉添加到最终的结果集中,直到两个子序列归并完成。
代码如下:
#!/usr/bin/python import sys def merge(nums, first, middle, last): ''''' merge ''' # 切片边界,左闭右开并且是了0为开始 lnums = nums[first:middle+1] rnums = nums[middle+1:last+1] lnums.append(sys.maxint) rnums.append(sys.maxint) l = 0 r = 0 for i in range(first, last+1): if lnums[l] < rnums[r]: nums[i] = lnums[l] l+=1 else: nums[i] = rnums[r] r+=1 def merge_sort(nums, first, last): ''''' merge sort merge_sort函数中传递的是下标,不是元素个数 ''' if first < last: middle = (first + last)/2 merge_sort(nums, first, middle) merge_sort(nums, middle+1, last) merge(nums, first, middle,last) if __name__ == '__main__': nums = [10,8,4,-1,2,6,7,3] print 'nums is:', nums merge_sort(nums, 0, 7) print 'merge sort:', nums
稳定,时间复杂度 O(nlog n)
插入排序
代码如下:
#!/usr/bin/python importsys definsert_sort(a): ''''' 插入排序 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数, 但要求插入后此数据序列仍然有序。刚开始 一个元素显然有序,然后插入一 个元素到适当位置,然后再插入第三个元素,依次类推 ''' a_len = len(a) if a_len = 0 and a[j] > key: a[j+1] = a[j] j-=1 a[j+1] = key return a if __name__ == '__main__': nums = [10,8,4,-1,2,6,7,3] print 'nums is:', nums insert_sort(nums) print 'insert sort:', nums
稳定,时间复杂度 O(n^2)
交换两个元素的值python中你可以这么写:a, b = b, a,其实这是因为赋值符号的左右两边都是元组
(这里需要强调的是,在python中,元组其实是由逗号“,”来界定的,而不是括号)。
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到
排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所
有元素均排序完毕。
参考技术A 1 #python ++i,-+i,+-i.--i2
3 #Author : Hongten
4 #Mailto : hongtenzone@foxmail.com
5 #Blog : http://www.cnblogs.com/hongten
6 #QQ : 648719819
7 #Version : 1.0
8 #Create : 2013-08-30
9
10 #初始化所需列表
11 testA = []
12 testB = []
13 testC = []
14 testD = []
15 testE = []
16 testF = []
17 testG = []
18 testH = []
19
20 for a in range(-5, 5, 1):
21 testA.append(++(a)) #++a
22 testB.append(-+(a)) #-+a
23 testC.append(+-(a)) #+-a
24 testD.append(--(a)) #--a
25 testE.append(+(+(a))) #+(+a)
26 testF.append(-(+(a))) #-(+a)
27 testG.append(+(-(a))) #+(-a)
28 testH.append(-(-(a))) #-(-a)
29
30 print('++i : '.format(testA))
31 print('+(+i) : '.format(testE))
32 print('可以看出:++i和+(+i)输出结果是一样的,说明他们是等效的\n')
33 print('-+i : '.format(testB))
34 print('-(+i) : '.format(testF))
35 print('可以看出:-+i和-(+i)输出结果是一样的,说明他们是等效的\n')
36 print('+-i : '.format(testC))
37 print('+(-i) : '.format(testG))
38 print('可以看出:+-i和+(-i)输出结果是一样的,说明他们是等效的\n')
39 print('--i : '.format(testD))
40 print('-(-i) : '.format(testH))
41 print('可以看出:--i和-(-i)输出结果是一样的,说明他们是等效的\n')
42
43 test_plus = []
44 test_sub = []
45
46 #使用b += 1实现自增
47 for b in range(-5, 5, 1):
48 b += 1
49 test_plus.append(b)
50
51 #使用c -= 1实现自减
52 for c in range(-5, 5, 1):
53 c -= 1
54 test_sub.append(c)
55
56 print('#' * 50)
57 print('i += 1 : '.format(test_plus))
58 print('i -= 1 : '.format(test_sub))
59 print('我们可以使用:i += 1, i -= 1来实现递增,递减。') 参考技术B 朋友你问题没描述完呀
用NumPy数组中的```[i,i,i]```快速替换元素i的pythonic方法?
我已经看到很多关于如何有效地用特定的东西替换NumPy数组元素的答案的问题,如“1”或其他东西,如果它们满足某些条件。
我希望用自己的数组替换2D NumPy数组中的所有元素,即元素i
被转换为元素[i,i,i]
或者[f(i),g(i),h(i)]
,我指定的一些函数f(x),g(x),h(x)
。如何以蟒蛇的方式完成这项工作(最好以与Numba相称的方式)?
使用np.repeat
:
a = np.repeat(np.arange(30).reshape(10, 3)[..., np.newaxis], 3, axis=2)
print(a.shape)
print(0, 0, :)
输出:
(10, 3, 3)
[0 0 0]
以上是关于在python中,如i=的主要内容,如果未能解决你的问题,请参考以下文章