学习python之路---python小算法总结(四)
2013-03-18 16:26
441 查看
题目16:合并排序Python实现
外部排序——合并排序原理
合并排序法基本是将两笔已排序的数据合并并进行排序,如果所读入的数据尚未排序,可以先利用其它的排序方式来处理这两笔数据,然后再将排序好的这两笔数据合并。
importrandom
importcopy
number1 =random.sample(range(100), 10)
number2 =random.sample(range(100), 10)
number1.sort()
number2.sort()
defrecursive_sort(listA, listB):
"""
递归实现
"""
iflen(listA) == 0:
return listB
elif len(listB) == 0:
return listA
elif listA[0] < listB[0]:
return [listA[0]] +recursive_sort(listA[1:], listB)
else:
return [listB[0]] +recursive_sort(listB[1:], listA)
defsort(listA, listB):
"""
非递归实现
"""
len_A = len(listA)
len_B = len(listB)
if len_A == 0:
return listB
elif len_B == 0:
return listA
else:
i = 0
j = 0
listC = []
while i < len_A and j < len_B:
if listA[i] <= listB[j]:
listC.append(listA[i])
i += 1
else:
listC.append(listB[j])
j += 1
while i < len_A:
listC.append(listA[i])
i += 1
while j < len_B:
listC.append(listB[j])
j += 1
return listC
printnumber1
printnumber2
listC =recursive_sort(number1, number2)
printlistC
listC =sort(number1, number2)
运行结果如下:
[9, 15, 20, 27, 32, 33, 56, 62,78, 84]
[29, 35, 46, 50, 66, 69, 84,87, 89, 90]
[9, 15, 20, 27, 29, 32, 33, 35, 46, 50, 56,62, 66, 69, 78, 84, 84, 87, 89, 90]
题目17:遍历字符串
theString = 'Ix lixkxex xpxytxhxonx !'
defPrintEngine(c):
ifc != 'x':
printc,
map(PrintEngine,theString)
输出结果:I l i k e p y t h o n !
题目18: 除法小技巧
Python中将两个整数相除,默认结果是整数。使用如下语句,可以得到相除的结果为小数
from __future__ import division
print7/3
输出结果:
2.3333333333
题目19:打印字符串格式
print '|','*'.ljust(10),'|'
print '|','*'.ljust(10,'-'),'|'
print '|','*'.rjust(10,'-'),'|'
print '|','*'.center(10,'-'),'|'
for a in range(1, 6):
print 'a ='.ljust(5), repr(a).ljust(10), 'b = '.ljust(5), repr(a * 2)
| * |
|*--------- |
|---------* |
|----*----- |
a= 1 b = 2
a= 2 b = 4
a= 3 b = 6
a= 4 b = 8
a= 5 b = 10
题目20:初始化多维数组
Python中初始化一个5X3每项为0的数组,较好的方法是
multilist = [[0 for col in range(5)] forrow in range(3)]
multilist[0][0]='love china'
print multilist
[['love china', 0, 0, 0, 0], [0, 0, 0, 0,0], [0, 0, 0, 0, 0]]
外部排序——合并排序原理
合并排序法基本是将两笔已排序的数据合并并进行排序,如果所读入的数据尚未排序,可以先利用其它的排序方式来处理这两笔数据,然后再将排序好的这两笔数据合并。
importrandom
importcopy
number1 =random.sample(range(100), 10)
number2 =random.sample(range(100), 10)
number1.sort()
number2.sort()
defrecursive_sort(listA, listB):
"""
递归实现
"""
iflen(listA) == 0:
return listB
elif len(listB) == 0:
return listA
elif listA[0] < listB[0]:
return [listA[0]] +recursive_sort(listA[1:], listB)
else:
return [listB[0]] +recursive_sort(listB[1:], listA)
defsort(listA, listB):
"""
非递归实现
"""
len_A = len(listA)
len_B = len(listB)
if len_A == 0:
return listB
elif len_B == 0:
return listA
else:
i = 0
j = 0
listC = []
while i < len_A and j < len_B:
if listA[i] <= listB[j]:
listC.append(listA[i])
i += 1
else:
listC.append(listB[j])
j += 1
while i < len_A:
listC.append(listA[i])
i += 1
while j < len_B:
listC.append(listB[j])
j += 1
return listC
printnumber1
printnumber2
listC =recursive_sort(number1, number2)
printlistC
listC =sort(number1, number2)
运行结果如下:
[9, 15, 20, 27, 32, 33, 56, 62,78, 84]
[29, 35, 46, 50, 66, 69, 84,87, 89, 90]
[9, 15, 20, 27, 29, 32, 33, 35, 46, 50, 56,62, 66, 69, 78, 84, 84, 87, 89, 90]
题目17:遍历字符串
theString = 'Ix lixkxex xpxytxhxonx !'
defPrintEngine(c):
ifc != 'x':
printc,
map(PrintEngine,theString)
输出结果:I l i k e p y t h o n !
题目18: 除法小技巧
Python中将两个整数相除,默认结果是整数。使用如下语句,可以得到相除的结果为小数
from __future__ import division
print7/3
输出结果:
2.3333333333
题目19:打印字符串格式
print '|','*'.ljust(10),'|'
print '|','*'.ljust(10,'-'),'|'
print '|','*'.rjust(10,'-'),'|'
print '|','*'.center(10,'-'),'|'
for a in range(1, 6):
print 'a ='.ljust(5), repr(a).ljust(10), 'b = '.ljust(5), repr(a * 2)
| * |
|*--------- |
|---------* |
|----*----- |
a= 1 b = 2
a= 2 b = 4
a= 3 b = 6
a= 4 b = 8
a= 5 b = 10
题目20:初始化多维数组
Python中初始化一个5X3每项为0的数组,较好的方法是
multilist = [[0 for col in range(5)] forrow in range(3)]
multilist[0][0]='love china'
print multilist
[['love china', 0, 0, 0, 0], [0, 0, 0, 0,0], [0, 0, 0, 0, 0]]
相关文章推荐
- 学习python之路---python小算法总结(一)
- 学习python之路---python小算法总结(二)
- 学习python之路---python小算法总结(三)
- 学习python之路---python小算法总结(六)
- 学习python之路---python小算法总结(七)
- Python 学习 (Leetcode 算法题解【easy部分 技巧总结】)
- Python之路,Day21 - 常用算法学习
- 编程学习总结python之路之字符编码(改进版1)(图)
- VERYIMPORTANT我的python学习之路-13知识总结
- Python算法之快排学习总结
- SVM学习总结(二)SVM算法流程图
- python学习之路一
- Python第二周学习总结
- 王亟亟的Python学习之路(七)-date,continue,迭代对象,生成器
- 开始Python的学习之路
- python学习总结----一些常用函数
- Openev3 python基础学习4——基础滤波算法
- Python学习之路--Flask+MongoDB搭建Restful Server
- python学习问题总结
- Python MySQLdb 学习总结