社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python数据排序与进制转换

Python初级入门到精通 • 5 月前 • 146 次点击  

Python数据排序

如何利用Python对一组无序数字按照从小到大进行排序呢?
首先,我们要考虑该怎么制定排序规则:
从后10个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后9个进行比较,并进行交换。
定好规则,下面就开始进行编程:

程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

if__name__=="__main__":
N= 11
# input data
print'please input ten num:\n'
l=[]
foriinrange(N):
l.append(int( raw_input('input a number:\n')))
print
foriinrange(N):
printl[i]
print

# sort ten num
foriinrange(N-1):
min=i
forjinrange(i+1 ,N):
ifl[min]>l[j]:min=j
l[i],l[min]=l[min],l[i]
print'after sorted'
foriinrange(N):
printl[i]

以上实例输出结果为:

pleaseinputtennum:

inputanumber:
5
inputanumber:
3
inputanumber:
23
inputanumber:
67
inputanumber:
1
inputanumber:
56
inputanumber:
45
inputanumber:
98
inputanumber:
249
inputanumber:
9

input a number:

350



5
3
23
67
1
56
45
98
249
9

350


aftersorted
1
3
5
9
23
45
56
67
98

249

350

这样,这一组无序数字,就按照我们的意愿完成了从小到大的排序啦。

进制转换

要了解计算机进制转换,首先要知道计算机完成计算工作的基础原理:

计算机存储单位:

1、位,bit,是描述电脑数据量的最小单位,8bit=1字节;

2、字节,Byte,一个英文字母=8Byte,一个汉字=16Byte,1024个字节=1KB;

3、千字节,KB,1024KB=1MB;

4、兆字节,MBq,1024MB=1GB;

5、吉字节,GB,1024GB=1TB;

6、太字节,TB,1024TB=1PB;

7、拍字节,PB,1024PB=1EB;

8、艾字节,EB,1024EB=1ZB;1ZB相当于全世界海滩上沙子数量总和;

9、泽字节,ZB,1024ZB=1YB;


内存:好比是一个摩天大厦,在这个摩天大厦中,有无数个房间,每个房间都有门牌号,每个房间称之为“字节”,一个房间中有8个开关,每个开关有两种状态,开启和关闭,一种状态对应1,一种状态对应0,一个开关就好比是计算机基础计量单位:位。


内存中以二进制形式存储数据,

二进制:0  1  逢二进一

0+0=0

0+1=1

1+1=10

10+1=11

11+1=100

100+1=101

101+1=110

110+1=111

111+1=1000

1000+1=1001

1001+1=1010

...
下面两张示意图详细演示了二进制加减法的运算过程。
1) 二进制加法:1+0=1、1+1=10、11+10=101、111+111=1110

图片
图1:二进制加法示意图


2) 二进制减法:1-0=1、10-1=1、101-11=10、1100-111=101

图片
二进制减法示意图


八进制:0 1 2 3 4 5 6 7 ,逢八进一

下面两张图详细演示了八进制加减法的运算过程。
1) 八进制加法:3+4=7、5+6=13、75+42=137、2427+567=3216

图片
图3:八进制加法示意图


2) 八进制减法:6-4=2、52-27=23、307-141=146、7430-1451=5757

图片
八进制减法示意图


十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f ,逢16进一

十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有 0~F 共16个数字,基数为16,加法运算时逢16进1,减法运算时借1当16。例如,数字 0、1、6、9、A、D、F、419、EA32、80A3、BC00 都是有效的十六进制。
注意,十六进制中的字母不区分大小写,ABCDEF 也可以写作 abcdef。

下面两张图详细演示了十六进制加减法的运算过程。

1) 十六进制加法:6+7=D、18+BA=D2、595+792=D27、2F87+F8A=3F11

图片
图5:十六进制加法示意图


2) 十六进制减法:D-3=A、52-2F=23、E07-141=CC6、7CA0-1CB1=5FEF

图片
十六进制减法示意图


十进制转“N”进制:倒除法,余数逆序.

1) 整数部分

  • 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;

  • 保留余数,用商继续除以 N,又得到一个新的商和余数;

  • 仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;

  • ……

  • 如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。


把先得到的余数作为 N 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,依次排列起来,就得到了 N 进制数字。

十进制数字 42 转换成二进制的过程:

图片


从图中得知,十进制数字 42 转换成二进制的结果为 101010


下图演示了将十进制数字 36926 转换成八进制的过程:

图片


十进制数字 36926 转换成八进制的结果为 110076

2) 小数部分

十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是:

  • 用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

  • 将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;

  • 再将积的整数部分取出,继续用 N 乘以余下的小数部分;

  • ……

  • 如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。


把取出的整数部分按顺序排列起来,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,这样就得到了 N 进制小数。

十进制小数 0.6875 转换成二进制小数的过程:

图片


从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011

十进制小数 0.930908203125 转换成八进制小数的过程:

图片


十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345


十进制整数与二进制、八进制、十六进制的对应关系:

十进制
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
二进制
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
八进制
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
十六进制
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10

注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

  • 十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...,是一个循环小数;

  • 十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...,是一个循环小数;

  • 十进制 0.625 对应的二进制为 0.101,是一个有限小数。



关注公众号,每天可以领红包


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/188956