数字
基本运算
表达式的语法很直接:运算符 +、-、*、/
的用法和其他大部分语言一样(比如 Pascal 或者 C 语言);括号 (()
) 用来分组。
>>> 1+2
3
>>> 1-2
-1
>>> 3*2
6
>>> 3/2
1.5
>>> 1*(2+3)
5
除法运算
除法运算 (/
) 永远返回浮点数类型。
如果要做 floor division 得到一个整数结果(忽略小数部分)你可以使用 //
运算符;
如果要计算余数,可以使用 %
>>> 2/3
0.6666666666666666
>>> 2//3
0
>>> 2%3
2
乘方
在Python中,可以使用 **
运算符来计算乘方
>>> 5**2
25
>>> 4**2
16
变量赋值
等号 (=
) 用于给一个变量赋值。然后在下一个交互提示符之前不会有结果显示出来:
>>> a=3
>>> b=4
>>> a*b
12
- 未定义的变量
如果一个变量未定义(未赋值),试图使用它时会向你提示错误:
>>> c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'c' is not defined
数字类型
int
float
BigDecimal
Fraction
Python 也内置对 复数 的支持,使用后缀 j 或者 J 就可以表示虚数部分(例如 3+5j )。
字符串
除了数字,Python 也可以操作字符串。字符串有多种形式,可以使用单引号(''
),双引号(""
)都可以获得同样的结果。
反斜杠 \
可以用来转义:
>>> 'hello py'
'hello py'
>>> "hello py"
'hello py'
>>> "hello p\"y"
'hello p"y'
原始字符串
如果你不希望前置了 \
的字符转义成特殊字符,可以使用原始字符串方式,在引号前添加 r
即可:
>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name')
C:\some\name
跨行输入
字符串字面值可以跨行连续输入。
一种方式是用三重引号:"""..."""
或 '''...'''
。
字符串中的回车换行会自动包含到字符串中,如果不想包含,在行尾添加一个 \
即可。
如下例:
>>> print("""hello)
... muliti
... line""")
hello)
muliti
line
连接和重复
字符串可以用 +
进行连接(粘到一起),也可以用 *
进行重复:
>>> 3*"googd" + "times"
'googdgoogdgoogdtimes'
ps: 这几点就比 java 方便了太多。
自动连接
相邻的两个或多个字符串字面值 (引号引起来的字符)将会自动连接到一起.
>>> "Py" "thon"
'Python'
ps: 变量无法这么使用,你可以使用 +
来进行连接。
下标访问
字符串是可以被索引(下标访问)的,第一个字符索引是 0。
单个字符并没有特殊的类型,只是一个长度为一的字符串:
ps: 个人理解是字符的集合。
>>> "python"[0]
'p'
索引也可以用负数,这种会从右边开始数:
(在 java 中,这就会越界。)
>>> "python"[-1]
'n'
注意 -0 和 0 是一样的,所以负数索引从 -1 开始。
切片
除了索引,字符串还支持 切片。索引可以得到单个字符,而 切片 可以获取子字符串:
ps: 感觉是对 String.subString(start, end) 的语法糖。
>>> "python"[1:3]
'yt'
>>> "python"[-2:-4]
''
>>> "python"[-4:-2]
'th'
注意切片的开始总是被包括在结果中,而结束不被包括。这使得 s[:i] + s[i:]
总是等于 s
切片的默认值
切片的索引有默认值;省略开始索引时默认为0,省略结束索引时默认为到字符串的结束:
>>> "python"[-4:]
'thon'
>>> "python"[:-2]
'pyth'
切片和下标访问的不同
- 使用过大的索引会产生一个错误:
>>> "python"[43]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
- 切片中的越界索引会被自动处理:
>>> "python"[2:43]
'thon'
列表
Python 中可以通过组合一些值得到多种复合数据类型。
其中最常用的列表,可以通过方括号括起、逗号分隔的一组值得到。
一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同:
创建
>>> list = [1,2,3,4,5]
>>> list
[1, 2, 3, 4, 5]
索引和切片
和字符串及各种内建的 sequence 类型一样,列表也支持索引和切片:
>>> list[0]
1
>>> list[2:3]
[3]
>>> list[2:]
[3, 4, 5]
返回的对象
所有的切片操作都返回一个新列表,这个新列表包含所需要的元素。
就是说,如下的切片会返回列表的一个新的(浅)拷贝:
>>> list[:]
[1, 2, 3, 4, 5]
列表的操作
组合
>>> list + [7,8,9]
[1, 2, 3, 4, 5, 7, 8, 9]
更新
与 immutable 的字符串不同, 列表是一个 mutable 类型,就是说,它自己的内容可以改变:
>>> list[1]=99
>>> list
[1, 99, 3, 4, 5]
append()
你也可以在列表结尾,通过 append() 方法 添加新元素 (我们会在后面解释更多关于方法的内容):
>>> list.append(8)
>>> list
[1, 99, 3, 4, 5, 8]
更新切片
给切片赋值也是可以的,这样甚至可以改变列表大小,或者把列表整个清空:
>>> list[:]=[]
>>> list
[]
嵌套列表
也可以嵌套列表 (创建包含其他列表的列表), 比如说:
>>> list.append(0)
>>> list
[0]
>>> newlist = [list, 2,34]
>>> newlist
[[0], 2, 34]
参考资料
https://docs.python.org/zh-cn/3/tutorial/introduction.html