【375】COMP 9021 相关笔记
1. Python 中的逻辑否定用 not
2. 对于下面的代码直邮输入整数才能运行,无论字符串或者浮点型都会报错
int(input('How many games should I simulate? '))
可以通过 try 来修改,同时注意 raise 的使用
while True:
try:
nb_of_games = int(input('How many games should I simulate? '))
if nb_of_games <= 0:
raise ValueError
print('Ok, will do!')
break
except ValueError:
print('Your input is incorrect, try again.')
3. set 与 dict 都是大括号
# Checking for membership in a list
'y' in ['yes', 'y', 'no', 'n']
'Y' in ['yes', 'y', 'no', 'n']
# Checking for membership in a set
'y' in {'yes', 'y', 'no', 'n'}
'Y' in {'yes', 'y', 'no', 'n'} '''
Curly braces are used for both literal dictionaries and literal sets.
There is no potential conflict, except for empty set versus empty dictionary;
{} denotes an empty dictionary, not an empty set:
''' # Singleton dictionary and set, respectively
type({'one': 1})
type({'one'})
# Empty dictionary and set, respectively
type({})
type(set())
4. random.choice() 可以随机选择列表里面的元素
random.randrange(),在 0 与 n 之间随机产生一个数
from random import choice
doors = ['A', 'B', 'C']
for i in range(12):
choice(doors)
5. list.pop() 默认删除最后一个,否则按照索引删除
6. format
To output information about the game as it is being played, it is convenient to use formatted strings; they are preceded with f and can contain pairs of curly braces that surround expressions meant to be replaced with their values. Also, though strings can be explicitly concatenated with the + operator, they can also be implicitly concatenated when they are separated with nothing but space characters, including possibly new lines:
x = 10
u = 4.5
v = 10
print(f'x is equal to {x}.'
' That is not all: '
f'{u} divided by {v} equals {u / v}.'
)
x = 123 / 321
f'{x}'
f'{x:.0f}'
f'{x:.1f}'
f'{x:.2f}'
f'{x:.3f}'
f'{x:.4f}'
f'{x:.30f}'
7. 神奇的 * 号,乘号,可以扩展字符串,可以扩展列表
[1, 2, 3]*3
"abc"*3
8. 输出格式,0补全
# A field width of 3 at least, padding with spaces if needed
f'{90:3}', f'{90:3b}', f'{90:3o}', f'{90:3x}', f'{90:3X}'
# A field width of 3 at least, padding with 0's if needed
f'{90:03}', f'{90:03b}', f'{90:03o}', f'{90:03x}', f'{90:03X}'
# A field width of 8 at least, padding with spaces if needed
f'{90:8}', f'{90:8b}', f'{90:8o}', f'{90:8x}', f'{90:8X}'
# A field width of 8 at least, padding with 0's if needed
f'{90:08}', f'{90:08b}', f'{90:08o}', f'{90:08x}', f'{90:08X}'
(' 90', '1011010', '132', ' 5a', ' 5A')
('090', '1011010', '132', '05a', '05A')
(' 90', ' 1011010', ' 132', ' 5a', ' 5A')
('00000090', '01011010', '00000132', '0000005a', '0000005A')
sorted
Let us still not "hardcode" the sequence of bits as (s[7], s[3], s[5], s[1], s[6], s[2], s[4], s[0]), but generate it. Let us first examine the sorted() function. By default, sorted() returns the list of members of its arguments in their default order:
sorted([2, -2, 1, -1, 0])
# Lexicographic/lexical/dictionary/alphabetic order
sorted({'a', 'b', 'ab', 'bb', 'abc', 'C'})
sorted(((2, 1, 0), (0, 1, 2), (1, 2, 0), (1, 0, 2)))
[-2, -1, 0, 1, 2]
['C', 'a', 'ab', 'abc', 'b', 'bb']
[(0, 1, 2), (1, 0, 2), (1, 2, 0), (2, 1, 0)]
sorted() accepts the reverse keyword argument:
sorted([2, -2, 1, -1, 0], reverse = True)
sorted({'a', 'b', 'ab', 'bb', 'abc', 'C'}, reverse = True)
sorted(((2, 1, 0), (0, 1, 2), (1, 2, 0), (1, 0, 2)), reverse = True)
[2, 1, 0, -1, -2]
['bb', 'b', 'abc', 'ab', 'a', 'C']
[(2, 1, 0), (1, 2, 0), (1, 0, 2), (0, 1, 2)]
sorted() also accepts the key argument, which should evaluate to a callable, e.g., a function. The function is called on all elements of the sequence to sort, and elements are sorted in the natural order of the values returned by the function:
sorted([2, -2, 1, -1, 0], key = abs)
sorted({'a', 'b', 'ab', 'bb', 'abc', 'C'}, key = str.lower)
sorted({'a', 'b', 'ab', 'bb', 'abc', 'C'}, key = len)
[0, 1, -1, 2, -2]
['a', 'ab', 'abc', 'b', 'bb', 'C']
['C', 'b', 'a', 'ab', 'bb', 'abc']
We can also set key to an own defined function: 按照自定义的顺序进行排序
def _2_0_1(s):
return s[2], s[0], s[1] def _2_1_0(s):
return s[2], s[1], s[0] sorted(((2, 1, 0), (0, 1, 2), (1, 2, 0), (1, 0, 2)), key = _2_0_1)
sorted(((2, 1, 0), (0, 1, 2), (1, 2, 0), (1, 0, 2)), key = _2_1_0)
[(1, 2, 0), (2, 1, 0), (0, 1, 2), (1, 0, 2)]
[(2, 1, 0), (1, 2, 0), (1, 0, 2), (0, 1, 2)]
So we could generate the sequence (0, 4, 2, 6, 1, 5, 3, 7) as follows:
def three_two_one(p):
return p % 2, p // 2 % 2, p % 4 for p in sorted(range(8), key = three_two_one):
p, f'{p:03b}'
(0, '000')
(4, '100')
(2, '010')
(6, '110')
(1, '001')
(5, '101')
(3, '011')
(7, '111')
lambda 表达式
There is a better way, using a lambda expression. Lambda expressions offer a concise way to define functions, that do not need to be named:
# Functions taking no argument, so returning a constant
f = lambda: 3; f()
(lambda: (1, 2, 3))()
3
(1, 2, 3)
# Functions taking one argument, the first of which is identity
f = lambda x: x; f(3)
(lambda x: 2 * x + 1)(3)
3
7
# Functions taking two arguments
f = lambda x, y: 2 * (x + y); f(3, 7)
(lambda x, y: x + y)([1, 2, 3], [4, 5, 6])
20
[1, 2, 3, 4, 5, 6]
【375】COMP 9021 相关笔记的更多相关文章
- 【376】COMP 9021 相关笔记(二)
Note_01 zip() itertools.zip_longest() %time Note_02 for 循环单行输出 list 技巧 迭代器 生成器 map() zip() from path ...
- HTTPS证书申请相关笔记
申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...
- JNI相关笔记 [TOC]
JNI相关笔记 目录 JNI相关笔记 1 生成native code所需要的头文件 2 JNI提供的一些函数和方法 3 局部引用,全局引用,全局弱引用. 4 异常 1 生成native code所需要 ...
- Hadoop相关笔记
一. Zookeeper( 分布式协调服务框架 ) 1. Zookeeper概述和集群搭建: (1) Zookeeper概述: Zookeeper 是一个分布式 ...
- redis相关笔记(二.集群配置及使用)
redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...
- redis相关笔记(三.redis设计与实现(笔记))
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...
- Windows API 进程相关笔记
0. 前言 最近做了一个进程信息相关的项目,整理了一下自己做项目时的笔记,分享给大家 1. 相关概念 1.1 HANDLE 概念 HANDLE(句柄)是Windows操作系统中的一个概念. 在Wind ...
- PHP相关笔记
扩展包(相关链接):https://packagist.org/: 插件postman主要应用于web开发时get.post请求时查看其响应:
- lua相关笔记
--[[ xpcall( 调用函数, 错误捕获函数 ); lua提供了xpcall来捕获异常 xpcall接受两个参数:调用函数.错误处理函数. 当错误发生时,Lua会在栈释放以前调用错误处理函数,因 ...
随机推荐
- Mysql 之多实例 安装以及配置
MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...
- mono搭建脚本整理
一.介绍 mono项目致力于能够使得开发人员在Linux用C#开发程序. 该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Net 工具, 包括C #编译器和共同语言 ...
- 《Linux 性能及调优指南》1.4 硬盘I/O子系统
翻译:飞哥 (http://hi.baidu.com/imlidapeng) 版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明. 原文名称:<Linux Performance a ...
- Can't use Subversion command line client***Probably the path to Subversion executable is wrong. Fix
新同事要入职,赶紧收拾一下电脑:再使用SVNupdate代码时,显示Nothing to show.androidstudio不能使用svn了: 是这样婶滴,报错信息 什么情况: 好了:问题叙述完毕开 ...
- 03-spark kafka
1.概念 Kafka是一个开源的消息系统.由Scala编写,它具备以下特点: ①消息持久化: 为了从大数据中获取有价值的信息,任何信息的丢失都是负担不起的.使用Kafka时,message会被存储并且 ...
- mysql千万级数据库插入速度和读取速度的调整记录
一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧. 1)提高数据库插入性能中心思想:尽量将数据一 ...
- spring mvc 跨域问题。。。解决
官方推荐方式: http://spring.io/blog/2015/06/08/cors-support-in-spring-framework 方式1: $.ajax({ //前台:常规写法.注意 ...
- 实战ELK(1) 安装ElasticSearch
第一步:环境 linux 系统 Java 1.8.0 elasticsearch-6.5.1 第二步:下载 2.1 JDK:https://mirrors.aliyun.com/centos/7.5 ...
- git push异常
git push异常:! [remote rejected] HEAD -> refs/for/master ([3149246] missing Change-Id in commit mes ...
- windows定时关机命令
at 11:00 shutdown.exe -s -t 120 https://jingyan.baidu.com/article/574c52191ea9996c8c9dc17a.html?st=2 ...