#1. 语法

Python中没有强制的语句终止字符,代码块是通过缩进来指示的。缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束。一般用4个空格来表示缩进。

  • 声明以冒号(:)字符结束,并且开启一个缩进级别。
  • 单行注释以井号字符(#)开头,多行注释则以多行字符串的形式出现。
  • 赋值(事实上是将对象绑定到名字)通过等号(“=”)实现
  • 双等号(“==”)用于相等判断
  1. # 本行是注释
  2. some_var = 3
  3. print(some_var)
  4.  
  5. print(some_var == 4)
  6.  
  7. if some_var > 1:
  8. print('Python就是这么简单')
  9. 3
  10. False
  11. Python就是这么简单

  

#2. 导入库

外部库可以使用 import [libname] 关键字来导入,也可以使用 from [libname] import [funcname] 来导入所需要的函数。例如:

  1. import math
  2. math.sqrt(25)
  3. 5.0
  4. from math import sqrt
  5. sqrt(25)
  6. 5.0

  

#3. 数据类型

查看数据类型:

  1. type(2)
  2. int
  3. type('two')
  4. str
  5. type(True)
  6. bool

  

类型转换:

  1. float(2)
  2. 2.0
  3. int(2.9)
  4. 2
  5. str(2.9)
  6. '2.9'

  

#4. 数学运算

  1. 10 + 4
  2. 14
  3. 10 - 4
  4. 6
  5. 10 * 4
  6. 40
  7. 10 % 4 # 计算余数
  8. 2
  9. 10 / 4
  10. 2.5

  

#5. 比较和布尔运算

赋值

  1. x = 5

比较:

  1. x > 3
  2. True
  3. x >= 3
  4. True
  5. x != 3
  6. True
  7. x == 5
  8. True

  

布尔运算:

  1. # and:与
  2. 5 > 3 and 6 > 3
  3. True
  4. # or:或
  5. 5 > 3 or 5 < 3
  6. True
  7. # not:非
  8. not False
  9. True

  

#6. 条件表达式

  1. # if 语句
  2. if x > 0:
  3. print('positive')
  4. positive
  5. # if/else 语句
  6. if x > 0:
  7. print('positive')
  8. else:
  9. print('zero or negative')
  10. positive
  11. # if/elif/else 语句
  12. if x > 0:
  13. print('positive')
  14. elif x == 0:
  15. print('zero')
  16. else:
  17. print('negative')
  18. positive

  

#7. 列表

  • 列表的特点: 有序,可迭代,可变,可以包含多个数据类型

创建列表

  1. # 两种创建空列表的方法如下
  2. empty_list = []
  3. empty_list = list()
  4. # 创建列表
  5. simpsons = ['homer', 'marge', 'bart']

  

获取列表数据:

  1. # 列表的第0个元素(列表的下标从0开始,这和C语言等一致)
  2. simpsons[0]
  3. 'homer'
  4. # 列表元素个数
  5. len(simpsons)
  6. 3

  

列表方法:

  1. # 在尾部追加,操作符+=完成同样的功能
  2. simpsons.append('lisa')
  3. simpsons
  4. ['homer', 'marge', 'bart', 'lisa']
  5. # 在尾部追加多个元素
  6. simpsons.extend(['itchy', 'scratchy'])
  7. simpsons
    ['homer', 'marge', 'bart', 'lisa', 'itchy', 'scratchy']
  8. # 在索引位置处将数据项插入列表
  9. simpsons.insert(0, 'maggie')
  10. simpsons
    ['maggie', 'homer', 'marge', 'bart', 'lisa', 'itchy', 'scratchy']
  11. # 列表从左往右搜索第一个出现的元素,并移除
  12. simpsons.remove('bart')
  13. simpsons
    ['maggie', 'homer', 'marge', 'lisa', 'itchy', 'scratchy']
  14. # 替代列表第一个元素
  15. simpsons[0] = 'krusty'
  16. simpsons
    ['krusty', 'homer', 'marge', 'lisa', 'itchy', 'scratchy']
  17. # 统计元素出现次数
  18. simpsons.count('lisa')
  19. 1
  20. # returns index of first instance
  21. simpsons.index('itchy')
  22. 4

  

列表切片:

  1. weekdays = ['mon', 'tues', 'wed', 'thurs', 'fri']
  2. # 第一个元素,索引值为0
  3. weekdays[0]
  4. 'mon'
  5. # 前三个元素,索引值为0、1、2,,其中0可以省略
  6. print(weekdays[0:3] == weekdays[:3])
  7. weekdays[0:3]
  8. True
  9. ['mon', 'tues', 'wed']
  10. # 从索引值为3的元素的位置到最后位置的元素
  11. weekdays[3:]
  12. ['thurs', 'fri']
  13. # 最后一个元素
  14. weekdays[-1]
  15. 'fri'
  16. # 每隔两个元素进行存取
  17. weekdays[::2]
  18. ['mon', 'wed', 'fri']
  19. # 反转列表,等价于list(reversed(weekdays))
  20. weekdays[::-1]
  21. ['fri', 'thurs', 'wed', 'tues', 'mon']
  22. # 对列表进行排序 (原地修改列表但不返回列表)
  23. simpsons.sort()
  24. simpsons
  25. ['homer', 'itchy', 'krusty', 'lisa', 'marge', 'scratchy']
  26. # 反向排序
  27. simpsons.sort(reverse=True)
  28. simpsons
  29. ['scratchy', 'marge', 'lisa', 'krusty', 'itchy', 'homer']
  30. # 根据传入的规则排序,以长度为例
  31. simpsons.sort(key=len)
  32. simpsons
  33. ['lisa', 'marge', 'itchy', 'homer', 'krusty', 'scratchy']
  34. # 返回已排序列表(并不修改原列表),可以传入排序规则:
  35. simpsons = [ 'krusty', 'itchy', 'scratchy', 'lisa']
  36. sorted(simpsons, key=len)
  37. ['lisa', 'itchy', 'krusty', 'scratchy']
  38. # 对象引用
  39. num = [10,20,30,40,50]
  40. same_num = num
  41. # 会同时修改两个对象
  42. same_num[0] = 0
  43. print(num)
  44. print(same_num)
  45. [0, 20, 30, 40, 50]
  46. [0, 20, 30, 40, 50]
  47. # 检查是否是同一个对象
  48. num is same_num
  49. True
  50. # 判断两个对象是否相等
  51. num == same_num
  52. True

  

#8. 元组

  • 元组性质: 有序,可迭代,不可变,可以包含多个数据类型
  • 类似于列表, 但不可变
  1. # 直接创建一个元组
  2. digits = (0, 1, 'two')
  3. # 将列表转化为元组
  4. digits = tuple([0, 1, 'two'])
  5. # 元组第三个位置的元素
  6. digits[2]
  7. 'two'
  8. # 元组长度
  9. len(digits)
  10. 3
  11. # 统计元组中元素出现的次数
  12. digits.count('two')
  13. 1
  14. # 返回该元素第一次出现的索引值
  15. digits.index(1)
  16. 1
  17. # 元组不可修改,下面语句会报错
  18. # digits[2] = 2

  

#9. 字符串

  • 字符串性质: 可迭代,不可变
  1. # 创建字符串
  2. s = 'I like you'
  3. # 字符串切片
  4. s[0]
  5. 'I'
  6. # 长度
  7. len(s)
  8. 10

  

字符串切片类似于列表切片:

  1. s[:6]
  2. 'I like'
  3. s[7:]
  4. 'you'
  5. s[-1]
  6. 'u'

  

字符串方法 (并不修改原字符串):

  1. s.lower()
  2. 'i like you'
  3. s.upper()
  4. 'I LIKE YOU'
  5. s.startswith('I')
  6. True
  7. s.endswith('you')
  8. True
  9. # 返回在字符串中的最左位置,如果没有找到,就返回-1
  10. s.find('like')
  11. 2
  12. # 字符串替换
  13. s.replace('like', 'love')
  14. 'I love you'

  

字符串分割:

  1. # 返回一个被空白字符分割的字符串列表
  2. s.split(' ')
  3. ['I', 'like', 'you']
  4. # 返回一个被特定字符分割的字符串列表
  5. s2 = 'a, an, the'
  6. s2.split(',')
  7. ['a', ' an', ' the']
  8. # 字符串拼接
  9. stooges = ['larry', 'curly', 'moe']
  10. ' '.join(stooges)
  11. 'larry curly moe'
  12. # + 也可作字符串拼接
  13. s3 = 'The meaning of life is'
  14. s4 = '42'
  15. s3 + ' ' + s4
  16. 'The meaning of life is 42'
  17. # 移除开始和结尾的空白字符
  18. s5 = ' ham and cheese '
  19. s5.strip()
  20. 'ham and cheese'

  

格式化字符串:

  1. # 方法1
  2. 'raining %s and %s' % ('cats', 'dogs')
  3. 'raining cats and dogs'
  4. # 方法2
  5. 'raining {} and {}'.format('cats', 'dogs')
  6. 'raining cats and dogs'

  

#10. 字典

  • 字典性质: 无序,可迭代,可变,可以包含多个数据类型
  • 由键-值对组成
  • 键必须是唯一的, 可以是字符串、数字、元组
  • 值可以是任何类型

字典的键与值:

  1. # 创建一个空字典(两种方法)
  2. empty_dict = {}
  3. empty_dict = dict()
  4. # 创建字典(两种方法)
  5. family = {'dad':'homer', 'mom':'marge', 'size':6}
  6. family = dict(dad='homer', mom='marge', size=6)
  7. family
  8. {'dad': 'homer', 'mom': 'marge', 'size': 6}
  9. # 传入键名,获取字典键值
  10. family['dad']
  11. 'homer'
  12. # 返回字典的键-值对数目
  13. len(family)
  14. 3
  15. # 检查字典中是否含有某个键名
  16. 'mom' in family
  17. True
  18. # 返回键名
  19. family.keys()
  20. dict_keys(['size', 'dad', 'mom'])
  21. # 返回键值
  22. family.values()
  23. dict_values([6, 'homer', 'marge'])
  24. # 返回键值对
  25. family.items()
  26. dict_items([('size', 6), ('dad', 'homer'), ('mom', 'marge')])

  

修改字典:

  1. # 增加一个键-值
  2. family['cat'] = 'snowball'
  3. family
  4. {'cat': 'snowball', 'dad': 'homer', 'mom': 'marge', 'size': 6}
  5. # 编辑一个已存在的键-值
  6. family['cat'] = 'snowball ii'
  7. family
  8. {'cat': 'snowball ii', 'dad': 'homer', 'mom': 'marge', 'size': 6}
  9. # 删除一个键-值
  10. del family['cat']
  11. family
  12. {'dad': 'homer', 'mom': 'marge', 'size': 6}
  13. # 字典值可以是列表
  14. family['kids'] = ['bart', 'lisa']
  15. family
  16. {'dad': 'homer', 'kids': ['bart', 'lisa'], 'mom': 'marge', 'size': 6}
  17. # 增加多个键-值
  18. family.update({'baby':'maggie', 'grandpa':'abe'})
  19. family
  20. {'baby': 'maggie',
  21. 'dad': 'homer',
  22. 'grandpa': 'abe',
  23. 'kids': ['bart', 'lisa'],
  24. 'mom': 'marge',
  25. 'size': 6}

  

获取键值的一个更安全的方法(get):

  1. # 获取字典值,等价于family['mom']
  2. family.get('mom')
  3. 'marge'
  4. # 如果字典中不存在,返回一个默认值
  5. family.get('grandma', 'not found')
  6. 'not found'

  

#11. 集合

  • 集合性质: 无序, 可迭代, 可变, 可以包含多个数据类型
  • 集合中元素是唯一的(字符串, 数字, or 元组)
  • 类似于字典,只有键名,没有键值

创建集合:

  1. # 创建空集合
  2. empty_set = set()
  3. # 创建集合
  4. languages = {'python', 'r', 'java'}
  5. # 将列表转化为集合
  6. snakes = set(['cobra', 'viper', 'python'])

  

集合运算:

  1. # 交集
  2. languages & snakes
  3. {'python'}
  4. # 并集
  5. languages | snakes
  6. {'cobra', 'java', 'python', 'r', 'viper'}
  7. # 差集
  8. languages - snakes
  9. {'java', 'r'}

  

修改集合 (并不返回集合):

  1. # a增加元素
  2. languages.add('sql')
  3. languages
  4. {'java', 'python', 'r', 'sql'}
  5. # 增加一个已存在的元素
  6. languages.add('r')
  7. languages
  8. {'java', 'python', 'r', 'sql'}
  9. # 移除元素
  10. languages.remove('java')
  11. languages
  12. {'python', 'r', 'sql'}
  13. # 移除所有元素
  14. languages.clear()
  15. languages
  16. set()

  

从列表中获取唯一元素的排序列表:

  1. sorted(set([9, 0, 2, 1, 0]))
  2. [0, 1, 2, 9]

  

#12. 函数

定义没有参数、没有返回值的函数:

  1. def print_text():
  2. print('this is text')
  3. # 调用函数
  4. print_text()
  5. this is text

  

定义含有一个参数、含有一个返回值的函数:

  1. # 定义函数
  2. def square_this(x):
  3. return x**2
  4. # 调用函数
  5. result = square_this(3)
  6. print(result)
  7. 9

  

定义含有两个位置参数(非默认值)、一个关键字参数(默认值)的函数:

  1. def calc(a, b, op='add'):
  2. if op == 'add':
  3. return a + b
  4. elif op == 'sub':
  5. return a - b
  6. else:
  7. print('valid operations are add and sub')
  8. # 调用函数
  9. calc(10, 4, op='add')
  10. 14
  11. # 通过参数位置来传入参数值
  12. calc(10, 4, 'add')
  13. 14
  14. # ‘op’关键字参数为默认值
  15. calc(10, 4)
  16. 14
  17. calc(10, 4, 'sub')
  18. 6
  19. calc(10, 4, 'div')
  20. valid operations are add and sub

  

如果您尚未编写函数体,请使用pass作为占位符:

  1. def stub():
  2. pass

  

函数含有两个返回值:

  1. def min_max(nums):
  2. return min(nums), max(nums)
  3. # 多个返回值可以绑定到类型为元组的变量上
  4. nums = [1, 2, 3]
  5. min_max_num = min_max(nums)
  6. min_max_num
  7. (1, 3)
  8. # 多个返回值绑定到多个变量上()通过元组解包的方式
  9. min_num, max_num = min_max(nums)
  10. print(min_num)
  11. print(max_num)
  12. 1
  13. 3

  

#13. 匿名(Lambda)函数

  • 主要用于临时定义由另一个函数使用的函数

定义函数:

  1. # 最常见的定义函数的方法——def
  2. def squared(x):
  3. return x**2
  4. # 使用lambda定义函数的方法,等价于def函数定义
  5. squared = lambda x: x**2

  

依据字符串最后一个元素的顺序,将字符串列表进行排序:

  1. # 使用def函数定义的方法
  2. simpsons = ['homer', 'marge', 'bart']
  3. def last_letter(word):
  4. return word[-1]
  5. sorted(simpsons, key=last_letter)
  6. ['marge', 'homer', 'bart']
  7. # 使用lambda函数定义的方法
  8. sorted(simpsons, key=lambda word: word[-1])
  9. ['marge', 'homer', 'bart']

  

#14. For循环与While循环

for 循环:

  1. # for循环
  2. fruits = ['apple', 'orange']
  3. for fruit in fruits:
  4. print(fruit.upper())
  5. APPLE
  6. ORANGE
  7. # 对字典的循环,依次打印字典的键名和键值
  8. family = {'dad':'homer', 'mom':'marge', 'size':6}
  9. for key, value in family.items():
  10. print(key, value)
  11. size 6
  12. dad homer
  13. mom marge
  14. # 对列表的循环,依次打印列表元素的索引值和元素
  15. for index, fruit in enumerate(fruits):
  16. print(index, fruit)
  17. 0 apple
  18. 1 orange

  

while 循环:

  1. count = 0
  2. while count < 5:
  3. print('This will print 5 times')
  4. count += 1 # 等价于 'count = count + 1'
  5. This will print 5 times
  6. This will print 5 times
  7. This will print 5 times
  8. This will print 5 times
  9. This will print 5 times

  

#15. 生成式

列表生成式:

  1. # 通过for循环获得一个列表,该列表的每个元素是原始列表对应元素的三次方
  2. nums = [1, 2, 3, 4, 5]
  3. cubes = []
  4. for num in nums:
  5. cubes.append(num**3)
  6. cubes
  7. [1, 8, 27, 64, 125]
  8. # 使用列表生成式
  9. cubes = [num**3 for num in nums]
  10. cubes
  11. [1, 8, 27, 64, 125]
  12. # 如果只想获得偶数值的列表
  13. # 语法: [expression for variable in iterable if condition]
  14. cubes_of_even = [num**3 for num in nums if num % 2 == 0]
  15. cubes_of_even
  16. [8, 64]

  

集合生成式:

  1. fruits = ['apple', 'banana', 'cherry']
  2. unique_lengths = {len(fruit) for fruit in fruits}
  3. unique_lengths
  4. {5, 6}

  

字典生成式:

  1. fruit_lengths = {fruit:len(fruit) for fruit in fruits}
  2. fruit_lengths
  3. {'apple': 5, 'banana': 6, 'cherry': 6}
  4. fruit_indices = {fruit:index for index, fruit in enumerate(fruits)}
  5. fruit_indices
  6. {'apple': 0, 'banana': 1, 'cherry': 2}

  

#16. FAQ

1. 应该学Python 2 还是 Python 3?

如果你还在问这个问题,选择Python 3。Python 3已经被广泛支持和使用,Python 2的程序可以通过 2to3 转换为Python 3。对初学者来说,Python 2和3区别不大。BigQuant的策略开发语言是Python 3。

10分钟学会Python的更多相关文章

  1. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  2. 10分钟学会Linux

    10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...

  3. 10分钟学会搭建Android开发环境 Eclipse: The import android.support cannot be resolved

    10分钟学会搭建Android开发环境_隋雨辰 http://v.youku.com/v_show/id_XNTE2OTI5Njg0.html?from=s1.8-1-1.2 The import a ...

  4. 10分钟学会VS NuGet包私有化部署

    前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...

  5. 【译】10分钟学会Pandas

    十分钟学会Pandas 这是关于Pandas的简短介绍主要面向新用户.你可以参考Cookbook了解更复杂的使用方法 习惯上,我们这样导入: In [1]: import pandas as pd I ...

  6. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支持.考虑到现在Git很火,作为微软系的程序员也不得不学一点防身,以免被开 ...

  7. 10分钟学会Less开发环境搭建与初体验

    Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Le ...

  8. 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发

    前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...

  9. 快速入门:十分钟学会Python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

随机推荐

  1. 简单的sequence unpacking

    t = (1, 2, ‘hl’) x, y, z = t 上述方法可用于任何sequence

  2. spring基于接口的代理报错

    报错: 1.在service层加上@Transactional注解.浏览器端报错(如下),eclipse控制台无信息 2.去掉@Transactional注解,无报错,但是数据库没有信息插入. 解决方 ...

  3. zepto.js按需载入模板对象

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/Joyhen/article/details/34412103 Zepto.js 是支持移动WebKi ...

  4. MyBatis框架的文件配置

    第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...

  5. IDEA中配置国内maven库镜像(阿里云)

    配置maven中settings.xml,在mirrors段内增加镜像配置,配置后如下: <mirror> <id>nexus-aliyun</id> <mi ...

  6. TZOJ 2478 How many 0's?(数位DP)

    描述 A Benedict monk No.16 writes down the decimal representations of all natural numbers between and ...

  7. alter table 修改表结构规范

    use database_name; ) )), ADD INDEX index_time ( `timeId` ); # 添加主键: alter table table_name add prima ...

  8. 万能的pdftk

    pdftk (the pdf toolkit) 是一个功能强大的命令行的 PDF 文件编辑软件,可以合并/分割 PDF 文档.对 PDF 文件加密解密.给 PDF 文档加水印.从 PDF 文档中解出附 ...

  9. git学习记录——分支管理和多人协作

    在公司里难免会出现多个人一起工作,这就需要构建多个分支派发给多个人去干活 这就产生一个需求,分支管理 分支的创建,合并和删除 其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制 ...

  10. 2019.10.22 csp-s模拟测试82 反思总结

    重来重来,刚刚就当什么都没发生 今天的题属实有些迷惑,各种意义上…总之都很有难度吧.不满归不满,这套题的确不是什么没有意义的题目. 为了考验自己的学习能力记忆力,决定不写题解,扔个代码完事了 其实是懒 ...