COMP9021 week3 notes

bases 2, 8, 16

十进制转二进制 binary

f'{23:b}'

'10111'

控制转成二进制时的位数,前面用0补全

f'{23:8b}'

'      10111'

f'{23:08b}'

'00010111'

计算出的数转二进制,三位,前面用0补足

f'{2 ** 3 -1:03b}'

从0到8转二进制

for n in range(8):

    print(f'{n:03b}')

000

001

010

011

100

101

110

111

从0-8转二进制的另一种方法

for n in range(8):

    print(n // 4, n % 4 // 2, n % 2)

从上面的number转tuple

for n in range(8):

    print(tuple(int(e) for e in f'{n:03b}'))

(0, 0, 0)

(0, 0, 1)

......

二进制转十进制 two symbols in front of the number in base 2

0b11011

二进制如何计算称为十进制:“11011”的十进制如何计算,十转二是除二取余, 二进制转十进制

1*(2**0) + 1*(2**1)+ 0*(2**2) + 1*(2**3) + 1*(2**4)

use default in base 2

int('0b11011',2)

don't have to write '0b', indispensible

int('11011',2)

十进制转八进制

f'{27:o}'


八进制转十进制

0o33

convert base 8 into base 10

int('33', 8)

int('0o33', 8)

八进制计算成为十进制

3 * (8**0)+ 3 * (8**1)

十进制转十六进制

f'{27:x}'

十六进制转十进制

0x1b

十六进制计算为十进制,b=11

11*(16**0) + 1*(16**1)

invalid literal for int() with base 10: '0b11011'

int('0b11011')


what is charater in 61

chr(61)

ask the position of the character

ord('=')

Remember: it is not consistent

'\N{large red square}'

'\N{white large square}'

'\N{black large square}'

Dictionary comprehensions

L = [1, 0, 0, 1, 1, 1, 0]

mapping = {0:'⬜', 1:'⬛'}

[mapping[x] for x in L]

Gluing all of that together

''.join([mapping[x] for x in L])

''.join(mapping[x] for x in L)

Sort the collection of things, you need to compare with something, make it sequential

sorted({3, 1, -5, 7, -6})

Just sort the keys

sorted({3:0, 1: 0, -5:'I', 7:'⬛', -6: 9.56})

Graphic

sorted({(3,0), (3,-2), (1,7), (3, 1), (1, -5)})

Cannot campare 'tuple' and 'int'

sorted({1, (2,)})

Pass float, int, and complex data into abs() function and it will return absolute value.

abs(4), abs(-4)

sorted({5, 3, 1, -5, 7, 5, -6, 5}, key=abs)

key主要用来比较元素

sorted([5, 3, 1, -5, 7, 5, -6, 5], key=abs)

how to order integers

{5, 3, 1, 5, 7, 5, 6, 5}

reverse = True降序,reverse=False升序(默认)

sorted([5, 3, 1, -5, 7, 5, -6, 5], key=abs, reverse = True)

The next() function returns the next item in an iterator.

sorted([5, 3, 1, -5, 7, 5, -6, 5], key=abs)=[1, 3, 5, -5, 5, 5, -6, 7]

The reversed() function returns a reversed(颠倒的) iterator object.

next(reversed(sorted([5, 3, 1, -5, 7, 5, -6, 5], key=abs)))

Don't want to pass two elements

def add_up(x, y):

    return x + y

sorted({(3,0), (3,-2), (1,7), (3, 1), (1, -5)}, key=add_up)

x is a tuple, so you can use[]

def add_up(x):

    return x[0] + x[1]

f = add_up

sorted({(3,0), (3,-2), (1,7), (3, 1), (1, -5)}, key=f)

sort()

list.sort(cmp=None, key=None, reverse=False)

cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

Lambda function

A lambda function can take any number of arguments, but can only have one expression.

Syntax:

lambda arguments : expression

Add 10 to argument a, and return the result:

x = lambda a : a + 10

print(x(5))

CBA的进行排序

sorted({(3,0,2), (3,0,1), (1,7,2), (3, 1,1), (1, -5,1)}, key=lambda x: (x[2],x[1],x[0]))

使用lambda定义一个函数,确定sort的排序关键值key进行运算。

sorted({(3,0), (3,-2), (1,7), (3, 1), (1, -5)}, key=lambda x: x[0]+x[1])

# x represents {}, dictionary, is a tuple, you can point out the elements in a tuple: x[0] represents the first one, x[0] + x[1] represents the first one plus the second one, and then sort these tuples from max to min.

[(1, -5), (3, -2), (3, 0), (3, 1), (1, 7)]

Use lambda for sorting purposes, and define a function

def add_up(x):

    return x[0] + x[1]

# define function add_up(x), x=x[0] + x[1]

f = add_up

# call add_up by f

sorted({(3,0), (3,-2), (1,7), (3, 1), (1, -5)}, key=f)

# the output is same as the last one

[(1, -5), (3, -2), (3, 0), (3, 1), (1, 7)]

标准数据类型

python共有五个标准的数据类型:

Numbers 数字

String 字符串

List 列表

Tuple 元组

Dictionary 字典

List 列表

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

加号 + 是列表连接运算符,星号 * 是重复操作。

list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]

tinylist = [123, 'john']

# 输出完整列表

print list

['runoob', 786, 2.23, 'john', 70.2]

# 输出列表的第一个元素

print list[0]

runoob

# 输出第二个至第三个元素

print list[1:3]

[786, 2.23]

# 输出从第三个开始至列表末尾的所有元素

print list[2:]

[2.23, 'john', 70.2]

# 输出列表两次

print tinylist * 2

[123, 'john', 123, 'john']

# 打印组合的列表

print list + tinylist

['runoob', 786, 2.23, 'john', 70.2, 123, 'john']

Tuple 元组

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表

元组是不允许更新的,而列表是允许更新的。

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )

tinytuple = (123, 'john') 

# 输出完整元组

print tuple

('runoob', 786, 2.23, 'john', 70.2)

 # 输出元组的第一个元素

print tuple[0] 

runoob

 # 输出第二个至第四个(不包含)的元素 

print tuple[1:3] 

(786, 2.23)

 # 输出从第三个开始至列表末尾的所有元素

print tuple[2:] 

(2.23, 'john', 70.2)

 # 输出元组两次

print tinytuple * 2 

(123, 'john', 123, 'john')

 # 打印组合的元组

print tuple + tinytuple 

('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

字典 dictionary

列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识

字典由索引(key)和它对应的值value组成。

dict = {}

dict['one'] = "This is one"

dict[2] = "This is two"

tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}

# 输出键为'one' 的值

print dict['one']

This is one

# 输出键为 2 的值

print dict[2]

This is two

# 输出完整的字典

print tinydict

{'dept': 'sales', 'code': 6734, 'name': 'runoob'}

# 输出所有键

print tinydict.keys()

['dept', 'code', 'name']

# 输出所有值

print tinydict.values()

['sales', 6734, 'runoob']

Python数据类型转换

Dictionary -> List

list(f'{23:08b}')

['0', '0', '0', '1', '0', '1', '1', '1']

Dictionary -> Number->List

[int(e) for e in f'{23:08b}']

[0, 0, 0, 1, 0, 1, 1, 1]

remove()

random choose the position of that, remove的位置每次都是从0开始,0、1、2、3,所以如果remove的下一位也是0,它会被顺位到前一位,下一次remove就轮空了

remove() method removes the first matching element

L = [1, 0, 2, 0, 0, 3, 0, 0, 4, 0]

for e in L:

    if e == 0:

        L.remove(e)

[1, 2, 3, 0, 4, 0]

L2 = [1, 0, 2, 0, 0, 3, 0, 0, 0, 4, 0]

for e in list(L2):

        if e == 0:

            L2.remove(e)

L2

[1, 2, 3, 4]

S = {1, 0, 2, 0, 0, 3, 0, 0, 0, 4, 0}

for e in set(S):

    if e == 0:

        S.remove(e)

S

{1, 2, 3, 4}

Map something

把23的二进制数8位的每一位与从0到8的三位二进制数的tuple进行组合,形成一个dictionary里,如果想倒着map,values[n]可以变成-n-1或者7-n,因为[]中的数只是标记values这个列表的位置。

values = [int(e) for e in f'{23:08b}']

D = {}

for n in range(8):

    D[tuple(int(e) for e in f'{n:03b}')] = values[n]

D

{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 1, (1, 0, 0): 0, (1, 0, 1): 1, (1, 1, 0): 1, (1, 1, 1): 1}

十进制变三位二进制的新方法

{(n // 4, n % 4 // 2, n % 2): values[7 - n] for n in range(8)}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容