在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.--i
2
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=的主要内容,如果未能解决你的问题,请参考以下文章

如何用python找出10000以内的全部回文数

如何用python轻松破解wif梦幻西游无双开服公告i密码

如何用Python实现杨辉三角和心

求助:如何用python脚本删除文本中的重复行(相同记录只保留一个)

python中如何用for循环输出一个列表

Python文件I/O