|
1 | 1 | # Python基础
|
| 2 | + |
| 3 | +本文为Python的一些基础知识总结,基于Python 3。 |
| 4 | + |
2 | 5 | <!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
|
3 | 6 |
|
4 | 7 | - [Python基础](#python基础)
|
|
15 | 18 | - [String replication 字符串复制](#string-replication-字符串复制)
|
16 | 19 | - [String is immutable 字符串的值是不可变的](#string-is-immutable-字符串的值是不可变的)
|
17 | 20 | - [String functions 字符串常用函数](#string-functions-字符串常用函数)
|
| 21 | + - [Lists and Tuple 列表和元组](#lists-and-tuple-列表和元组) |
| 22 | + - [Tuple 元组](#tuple-元组) |
| 23 | + - [Tuple properties 元组属性](#tuple-properties-元组属性) |
| 24 | + - [Tuple Nesting 元组嵌套](#tuple-nesting-元组嵌套) |
| 25 | + - [List 列表](#list-列表) |
| 26 | + - [List properties 列表属性](#list-properties-列表属性) |
| 27 | + - [Covert String to List 转换字符串到列表](#covert-string-to-list-转换字符串到列表) |
| 28 | + - [List Aliasing 列表别名](#list-aliasing-列表别名) |
| 29 | + - [List Clone 列表复制](#list-clone-列表复制) |
| 30 | + - [Dictionary 字典](#dictionary-字典) |
| 31 | + - [Sets 集合](#sets-集合) |
| 32 | + - [Conditions and Branching 条件和分支](#conditions-and-branching-条件和分支) |
| 33 | + - [Conditions 条件](#conditions-条件) |
| 34 | + - [Branching 分支](#branching-分支) |
| 35 | + - [Loops 循环](#loops-循环) |
| 36 | + - [Functions 函数](#functions-函数) |
| 37 | + - [Build in functions 内置函数](#build-in-functions-内置函数) |
| 38 | + - [Collecting arguments 多参数](#collecting-arguments-多参数) |
| 39 | + - [Scope 作用域](#scope-作用域) |
| 40 | + - [Objects and Classes 对象和类](#objects-and-classes-对象和类) |
18 | 41 |
|
19 | 42 | <!-- /TOC -->
|
20 | 43 |
|
|
26 | 49 | * bool
|
27 | 50 |
|
28 | 51 | ### Type conversion 类型转换
|
29 |
| -使用 _Type(*)_ 用来获得变量类型 |
| 52 | +使用 _type(*)_ 用来获得变量类型,_help(*)_ 可以获得帮助说明。 |
30 | 53 | ``` python
|
31 | 54 | float(7) # => 7.0
|
32 | 55 | int(7.24) # => 7
|
@@ -115,3 +138,155 @@ s1 = "Wen" # OK
|
115 | 138 | * `str.upper()`
|
116 | 139 | * `str.repleace(from_str, to_str)`
|
117 | 140 | * `str.find(sub_str)`,返回第一次出现的`index`,没找到返回`-1`
|
| 141 | + |
| 142 | +## Lists and Tuple 列表和元组 |
| 143 | +### Tuple 元组 |
| 144 | +* Tuple是有序的序列 |
| 145 | +* Tuple可以含有不同的基本类型,例如`string`、`int`、`float`、`bool`等 |
| 146 | +* 使用圆括号 `(*, *)` |
| 147 | + |
| 148 | +#### Tuple properties 元组属性 |
| 149 | +* 可以使用索引的方式访问`tuple[i]` |
| 150 | +* 合并:`tuple3 = tuple1 + tuple2` |
| 151 | +* 支持`slicing` |
| 152 | +* 同样`immutable` |
| 153 | + |
| 154 | +#### Tuple Nesting 元组嵌套 |
| 155 | +`Tuple`的一个`item`可以是`Tuple` |
| 156 | +``` python |
| 157 | +tuple0 = (1, 2, ("pop", "rock"), (3, 4)) |
| 158 | +tuple0[2] # => ("pop", "rock") |
| 159 | +tuple0[2][1] # => "rock"` |
| 160 | +``` |
| 161 | + |
| 162 | +### List 列表 |
| 163 | +* List是有序的序列 |
| 164 | +* List可以含有不同的基本类型,例如`string`、`int`、`float`、`bool`等 |
| 165 | +* 使用方括号 `[*, *]` |
| 166 | + |
| 167 | +#### List properties 列表属性 |
| 168 | +* 支持索引访问 |
| 169 | +* 合并:`list3 = list1 + list2` |
| 170 | + * 等于`list3 = list1`, `list3.extend(list2)` |
| 171 | + * **注意**:`append`与`extend`不同,被`append`的`item`是作为一个整体追加到`list`末尾,例如`L.append(["pop", 10])`后,`L`中多了一个元素`["pop", 10]` |
| 172 | +* 支持`slicing` |
| 173 | +* 支持Nesting 嵌套 |
| 174 | +* **`mutable`**,元素可被修改 |
| 175 | + * 对某个元素重新赋值:`L[0] = 0` |
| 176 | + * `del(L[0])`即可删除某个`item` |
| 177 | + |
| 178 | +#### Covert String to List 转换字符串到列表 |
| 179 | +`string.split()`:按照空格拆分字符串 |
| 180 | +``` python |
| 181 | +"Kaikai is a dog".split() # => ['Kaikai', 'is', 'a', 'dog'] |
| 182 | +"Kaikai,is,a,dog".split(",") # => ['Kaikai', 'is', 'a', 'dog'] |
| 183 | +``` |
| 184 | + |
| 185 | +#### List Aliasing 列表别名 |
| 186 | +如果一个变量`B`指向另一个变量`A` `(B = A)`,那么`B`是`A`的别名。对`A`的任何改动,`B`都可以访问到。 |
| 187 | + |
| 188 | +#### List Clone 列表复制 |
| 189 | +复制一个列表通过 `B = A[:]`的方式,`A`和`B`相互不影响 |
| 190 | + |
| 191 | +## Dictionary 字典 |
| 192 | +`Dictionary`中的每个元素由`(key, value)`的键值对组成。 |
| 193 | +* 使用花括号来表示`{}`来表示。 |
| 194 | +* `Key`是唯一的,并且不可修改 |
| 195 | +* `value`可以是可修改的/不可修改的,可重复的 |
| 196 | +* 每个`item`之间用逗号隔开 |
| 197 | +* 访问 |
| 198 | + * 使用`dict[key]`的方式来访问`value` |
| 199 | +* 新增 |
| 200 | + * 直接对一个`dict[key]`赋值 |
| 201 | +* 删除 |
| 202 | + * `del(dict[key])` |
| 203 | +* 获取所有keys或values |
| 204 | + * `dict.keys()` |
| 205 | + * `dict.values()` |
| 206 | + |
| 207 | +```python |
| 208 | +dic = {"k1":1, "k2":"2", "k3":[3,3], "k4":(4,4), ('k5'):5} |
| 209 | +``` |
| 210 | + |
| 211 | +## Sets 集合 |
| 212 | +`Sets` 是类似`list`和`tuple`的集合,可以包含任意元素。 |
| 213 | +* 使用花括号来表示`{}`来表示。 |
| 214 | +* **Unordered**:Sets是无序的 |
| 215 | +* **Unique**:Sets里的元素是唯一的 |
| 216 | +* 创建 |
| 217 | + * 通过类型转换:`set(a_list)` |
| 218 | +* 新增 |
| 219 | + * `s.add(item)` |
| 220 | +* 删除 |
| 221 | + * `s.remove(item)` |
| 222 | +* 两个集合的交集 |
| 223 | + * `s0 & s2` |
| 224 | +* 两个集合的合集 |
| 225 | + * `s0` |
| 226 | +* 测试是否包含某个元素 |
| 227 | + * `item in s` |
| 228 | +* 测试是否是子集 |
| 229 | + * `s0.issubset(s1)` |
| 230 | + |
| 231 | +## Conditions and Branching 条件和分支 |
| 232 | +### Conditions 条件 |
| 233 | +* `==, <=, >=, >, <, !=` |
| 234 | + * 比较int、float、double、string、list等都可以 |
| 235 | + * 尤其是`==`可用来比较值/元素是否相同 |
| 236 | +* `or` / `and` |
| 237 | + |
| 238 | +### Branching 分支 |
| 239 | +* `if (...), elif(...), else`: |
| 240 | + |
| 241 | +## Loops 循环 |
| 242 | +`range([start], end)` |
| 243 | +* 产生从`0`开始的一个序列知道`end -1`, |
| 244 | + |
| 245 | +`for i in range(N):` |
| 246 | +* 循环`0, 1, ..., N-1` |
| 247 | + |
| 248 | +`while (condition):` |
| 249 | + |
| 250 | +## Functions 函数 |
| 251 | +函数是有输入和输出的代码集合,主要目的是为了复用,同时让代码结构更清晰。 _Python_ 中函数的定义使用关键词`def function_name():` |
| 252 | + |
| 253 | +### Build in functions 内置函数 |
| 254 | +* `len()`: 长度、元素个数 |
| 255 | +* `sum()`:元素求和 |
| 256 | +* `sorted()`:将collection的元素排序的结果返回,原collection不受影响 |
| 257 | + |
| 258 | +### Collecting arguments 多参数 |
| 259 | +参数前可以有1个或2个星号,这两种用法其实都是用来将任意个数的参数导入到python函数中。 |
| 260 | +* `def foo(param1, *agrs):`: |
| 261 | + * 将所以参数以元组(tuple)的形式导入 |
| 262 | + ``` python |
| 263 | + def foo(param1, *param2): |
| 264 | + print(param1) # => 1 |
| 265 | + print(param2) # => (2, 3, 4, 5) |
| 266 | + foo(1,2,3,4,5) |
| 267 | + ``` |
| 268 | +* `def bar(param1, **kwargs):`: |
| 269 | + * 将参数以字典的形式导入 |
| 270 | + ``` python |
| 271 | + def bar(param1, **param2): |
| 272 | + print(param1) # => 1 |
| 273 | + print(param2) # => {'a': 2, 'b': 3} |
| 274 | + bar(1, a=2, b=3) |
| 275 | + ``` |
| 276 | + |
| 277 | +### Scope 作用域 |
| 278 | +_Python_ 中变量区分局部和全局作用域,同 _C++_ / _Java_ 之类的语言。 |
| 279 | +如果在函数中希望定义全局变量,可以在变量前加关键字`global`,以便在全局可被访问。 |
| 280 | + |
| 281 | +## Objects and Classes 对象和类 |
| 282 | +* **类(Class)**: 用来描述具有相同的属性(Data attributes)和方法(methods)的对象的集合。 |
| 283 | + * 定义: |
| 284 | + * `class ClassName ([ParentClassName]):` |
| 285 | + * 构造函数或初始化方法: |
| 286 | + * `def __init__(self, name, salary):` |
| 287 | +* **对象(Object)**:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。 |
| 288 | + * 创建: |
| 289 | + * `varName = ClassName ([parameters])` |
| 290 | +* **方法(Method)**:类中定义的函数 |
| 291 | + |
| 292 | +可以用`dir(object)`的方式列出类的属性。 |
0 commit comments