括号

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

戏子无情 提交于 2019-12-04 21:09:13
在Python 3.6的版本中,Python提供了一种新的字符串格式化方法:f-strings,它不仅比其它的格式化方式更易读,更简洁,更不容易出错,并且它们也更快! 首先,我们先了解一下现有的字符串格式化方法。 Python 在 3.6 的这一个版本之前,字符串格式化方法主要有两种:%格式化 和 str.format()。下面我们先来简单的看一下它们的使用方法,以及局限。 1 %-格式化 % 格式化方法从 Python 刚开始的时候就存在了,堪称「一届元老」,但是 Python 官方文档中并不推荐这种格式化方式: 1.1 如何使用 %格式化 一般的使用方式,想要插入多个变量的话,必须使用元组: 1.2 %格式化的缺陷 上面的代码示例看起来还能读,但是,一旦开始使用多个参数和更长的字符串,你的代码将很快变得不那么容易阅读: 可以看出,这种格式化并不是很好,因为它很冗长并且容易导致错误,比如没有正确显示元组或字典。 不过还好我们还有 str.format()。 2 str.format() Python 2.6 中引入了 str.format() 格式化方法: https://docs.python.org/3/library/stdtypes.html#str.format 2.1 str.format() 的使用 str.format() 是对 %格式化 的改进

leetcode 32. 最长有效括号

为君一笑 提交于 2019-12-04 20:46:29
32. 最长有效括号 问题描述 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 问题分析 我们从左到右进行扫描,我们使用栈lefts来存放左括号,有两种情况: 1.遇到'(',直接入栈; 2.遇到')',需要检查之前左括号的情况: 2.1 如果lefts空了,说明没有左括号与目前的右括号匹配,我们记录下当前右括号的位置last; 2.2 如果lefts不空,说明可以找到左括号与目前右括号匹配,我们把这个左括号出栈,这时还要分两种情况讨论: 2.2.1 如果lefts空了,说明左括号已经匹配完了,我们需要更新最大长度,这时初始位置和之前的last有关(i - last); 2.2.2 如果lefts不空,说明还有剩下的左括号没有被匹配,我们同样需要更新最大长度,这时初始位置和最顶上的左括号有关(i - lefts.top()); 当然也可以把2.2.1和2.2.2理解为一个位置,那就是被匹配的左括号之前的一个位置,但是如果栈空了就没法找到这个位置,因此我们使用一个last来进行记录。 代码 class Solution { public: int

易错易忘点

假如想象 提交于 2019-12-04 16:10:28
目录 1、python2与python3的区别 2、装饰器 3、多线程、多进程 4、GIL 5、OSI七层协议 6、HTTP协议 7、垃圾回收机制 1、python2与python3的区别 1、默认字符编码 python2:ascii python3: utf-8 2、print python2: 1、打印时可加括号,也可不加 2、打印一个值,输出无括号 3、打印多个值,若打印时加了括号,输出也有括号,并且有逗号分隔,即元组形式 4、打印多个值,若打印时没加括号,输出也没括号,并且没有逗号分隔,与python3一致 5、python3中,打印时必须要加括号 3、input 1、python2中有两种打印语句:input和rawinput 2、python2中input接收用户输入时,需要指定数据类型,input接收的就是该类型的数据 3、python2中rawinput接收用户输入时,不需要指定类型,全部接收为字符串 4、python3中只有input,不需要指定类型,全部接收为字符串 4、字符串 1、py2中:unicode类型表示字符串序列,str表示字节序列 2、py3中str表示字符串序列,byte类型表示字节序列 5、global与nonlocal 1、py3中新增了关键字nonlocal,声明变量为多层嵌套函数整个局部 2、装饰器 1、本质是闭包函数 2、使用闭包的思想

jerry

假如想象 提交于 2019-12-04 08:39:59
jerry 题目描述 众所周知,Jerry 鼠是一只非常聪明的老鼠。 Jerry 聪明到它可以计算64 位有符号整形数字的加减法。 现在,Jerry 写下了一个只由非负整数和加减号组成的算式。它想给这个算式添加合法的括号,使得算式的结果最大。这里加减法的运算优先级相同,和我们在日常生活中接触到的一样,当没有括号时,先算左边的,再算右边的。 比如,算式 (1+2)+3-(4-5)+6 ( 1 + 2 ) + 3 − ( 4 − 5 ) + 6 是合法的,但是 )1+2( ) 1 + 2 ( 和 (-)1+2 ( − ) 1 + 2 以及 (1)+2 ( 1 ) + 2 都是不合法的。 输入格式 接下来,共有 T T 组数据,每组的格式如下: 第一行一个整数 n n,代表数字的个数。 接下来一行共 2n-1 2 n − 1 个符号或非负整数,组成一个由空格隔开的算式。 输出格式 一行一个整数,代表添加括号后,算式最大的可能结果。 样例 样例输入1 1 3 5 - 1 - 3 样例输出1 7 样例1说明 5-(1-3) = 7 样例输入2 1 4 1 - 1 - 1 - 3 样例输出2 4 样例2说明 1- (1 - 1 - 3) = 4 样例3 下发了额外的一个大型样例文件。 数据范围与提示 测试点编号 n的范围 特殊性质 1 n \le 3 n ≤ 3 无 2,3 n \le 10

Scala函数调用省略点号和括号

こ雲淡風輕ζ 提交于 2019-12-04 06:51:43
Scala函数调用省略点号和括号 省略括号 如果一个方法不用接受参数,你可以无需括号就定义它。调用者也必须不加括号地调用它。如果你加上了空括号,那么调用者可以有选择地加或者不加括号。例如,List 的size 方法没有括号,所以你必须写List(1,2,3).size。如果你尝试写List(1,2,3).size() 就会得到一个错误。如下代码, println(List(1, 2, 3).size) println(List(1, 2, 3).size()) 运行并输出, C:\WorkSpace6-scala\scala-train\src\com\usoft\traversing_mapping_so_on.scala:154: error: Int does not take parameters println(List(1, 2, 3).size()) ^ one error found 然而,String 类的length方法在定义时带有括号,所以,"hello".length() 和"hello".length 都可以通过编译。 Scala 社区的约定是,在没有副作用的前提下,省略调用方法时候的空括号。所以,查询一个序列的大小(size)的时候可以不用括号, 但是定义一个方法来转换序列的元素则应该写上括号。 省略点号 如下示例,size 方法是List中得到

括号配对

浪尽此生 提交于 2019-12-04 06:31:24
https://loj.ac/problem/10150 题目描述   给出一个由小括号和中括号组成的括号序列,求最少添加几个括号可以是括号完全匹配。 思路   我们考虑用 \(f[i][j]\) 表示在 \(i\sim j\) 段的答案,那么对于它可以由较短长度的序列转移过来,我们分为三种情况:1、序列两端恰好匹配。2、由 \(j-i\) 长度的转移过来。3、把序列分为两段计算贡献。直接 \(dp\) 求即可。 代码 #include <bits/stdc++.h> using namespace std; char s[110]; int f[110][110]; int main() { scanf(" %s",s+1); int n=strlen(s+1); memset(f,127,sizeof(f)); for(int i=1;i<=n;i++) f[i][i]=1; for(int i=1;i<=n;i++) for(int j=1;j<i;j++) f[i][j]=0; for(int len=2;len<=n;len++) for(int l=1;l<=n-len+1;l++) { int r=l+len-1; if((s[l]=='('&&s[r]==')')||(s[l]=='['&&s[r]==']')) f[l][r]=min(f[l][r],f[l+1]

C++的逆波兰表达式的求解

梦想的初衷 提交于 2019-12-04 02:09:53
逆波兰表示法 (Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家 扬·武卡谢维奇 1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。 逆波兰结构由弗里德里希·鲍尔(Friedrich L. Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈结构和减少计算机内存访问。逆波兰记法和相应的算法由澳大利亚哲学家、计算机学家查尔斯·汉布林(Charles Hamblin)在1960年代中期扩充 在1960和1970年代,逆波兰记法广泛地被用于台式计算器,因此也在普通公众(工程、商业和金融领域)中使用(百度百科)。 算法: 一、 将中缀表达式转换成后缀表达式算法: 1、从左至右扫描一中缀表达式。 2、若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈 3、若读取的是运算符 (1) 该运算符为左括号"(",则直接存入运算符堆栈。 (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止。 (3) 该运算符为非括号运算符: (a) 若运算符堆栈栈顶的运算符为括号,则直接存入运算符堆栈。 (b) 若比运算符堆栈栈顶的运算符优先级高或相等,则直接存入运算符堆栈。 (c)

正则小括号实践

本秂侑毒 提交于 2019-12-03 23:06:20
var reg=/^18|19$/ //结果可匹配:18,19, 189, 119, 819,181, 1819 意思为: *18或者19 *以18开头或以19结尾, *以1开头,9结尾,当中包含8或1 var reg=/^(18|19)$/ //结果:18, 19 //():正则中的分组,也可以理解为一个大正则中的一个小正则(包起来部分是一个整体),在正则中可以使用小括号改变一些默认优先级 //小分组第二个作用:分组引用 //小分组第三个作用:分组捕获 //分组引用:\1或\2...出现和第n个分组一模一样的内容 var reg=/^([a-z])([a-z])\2([a-z])$/; 匹配:food, foot,book, weel, week,oppo, 找出中间两字母相同的四字母组合   看了基础知识后组合应用需要实践 来源: https://www.cnblogs.com/smzd/p/11810700.html

markdwon编辑公式入门

独自空忆成欢 提交于 2019-12-03 15:21:20
上标与下标   上标和下标分别使用^ 与_ ,例如 \(x_i^2\) 表示的是:。   默认情况下,上、下标符号仅仅对下一个组起作用。一个组即单个字符或者使用{..} 包裹起来的内容。如果使用 \(10^10\) 表示的是,而 \(10^{10}\) 才是。同时,大括号还能消除二义性,如x^5^6 将得到一个错误,必须使用大括号来界定^的结合性,如 \({x^5}^6\) :或者 \(x^{5^6}\) :。 括号 小括号与方括号   使用原始的( ) ,[ ] 即可,如 \((2+3)[4+4]\) :   使用\left(或\right)使符号大小与邻近的公式相适应(该语句适用于所有括号类型),如 \(\left(\frac{x}{y}\right)\) : 大括号   由于大括号{} 被用于分组,因此需要使用{和}表示大括号,也可以使用\lbrace 和\rbrace来表示。如 \(\{a\*b\}:a\∗b\) 或 \(\lbrace a\*b\rbrace :a\*b\) 表示。 尖括号   区分于小于号和大于号,使用\langle 和\rangle 表示左尖括号和右尖括号。如 \(\langle x \rangle\) 表示:。 上取整   使用\lceil 和 \rceil 表示。 如, \(\lceil x \rceil\) :。 下取整   使用\lfloor