10分钟学会Python
#1. 语法
Python中没有强制的语句终止字符,代码块是通过缩进来指示的。缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束。一般用4个空格来表示缩进。
- 声明以冒号(:)字符结束,并且开启一个缩进级别。
- 单行注释以井号字符(#)开头,多行注释则以多行字符串的形式出现。
- 赋值(事实上是将对象绑定到名字)通过等号(“=”)实现
- 双等号(“==”)用于相等判断
- # 本行是注释
- some_var = 3
- print(some_var)
- print(some_var == 4)
- if some_var > 1:
- print('Python就是这么简单')
- 3
- False
- Python就是这么简单
#2. 导入库
外部库可以使用 import [libname] 关键字来导入,也可以使用 from [libname] import [funcname] 来导入所需要的函数。例如:
- import math
- math.sqrt(25)
- 5.0
- from math import sqrt
- sqrt(25)
- 5.0
#3. 数据类型
查看数据类型:
- type(2)
- int
- type('two')
- str
- type(True)
- bool
类型转换:
- float(2)
- 2.0
- int(2.9)
- 2
- str(2.9)
- '2.9'
#4. 数学运算
- 10 + 4
- 14
- 10 - 4
- 6
- 10 * 4
- 40
- 10 % 4 # 计算余数
- 2
- 10 / 4
- 2.5
#5. 比较和布尔运算
赋值
x = 5
比较:
- x > 3
- True
- x >= 3
- True
- x != 3
- True
- x == 5
- True
布尔运算:
- # and:与
- 5 > 3 and 6 > 3
- True
- # or:或
- 5 > 3 or 5 < 3
- True
- # not:非
- not False
- True
#6. 条件表达式
- # if 语句
- if x > 0:
- print('positive')
- positive
- # if/else 语句
- if x > 0:
- print('positive')
- else:
- print('zero or negative')
- positive
- # if/elif/else 语句
- if x > 0:
- print('positive')
- elif x == 0:
- print('zero')
- else:
- print('negative')
- positive
#7. 列表
- 列表的特点: 有序,可迭代,可变,可以包含多个数据类型
创建列表
- # 两种创建空列表的方法如下
- empty_list = []
- empty_list = list()
- # 创建列表
- simpsons = ['homer', 'marge', 'bart']
获取列表数据:
- # 列表的第0个元素(列表的下标从0开始,这和C语言等一致)
- simpsons[0]
- 'homer'
- # 列表元素个数
- len(simpsons)
- 3
列表方法:
- # 在尾部追加,操作符+=完成同样的功能
- simpsons.append('lisa')
- simpsons
- ['homer', 'marge', 'bart', 'lisa']
- # 在尾部追加多个元素
- simpsons.extend(['itchy', 'scratchy'])
- simpsons
['homer', 'marge', 'bart', 'lisa', 'itchy', 'scratchy']- # 在索引位置处将数据项插入列表
- simpsons.insert(0, 'maggie')
- simpsons
['maggie', 'homer', 'marge', 'bart', 'lisa', 'itchy', 'scratchy']- # 列表从左往右搜索第一个出现的元素,并移除
- simpsons.remove('bart')
- simpsons
['maggie', 'homer', 'marge', 'lisa', 'itchy', 'scratchy']- # 替代列表第一个元素
- simpsons[0] = 'krusty'
- simpsons
['krusty', 'homer', 'marge', 'lisa', 'itchy', 'scratchy']- # 统计元素出现次数
- simpsons.count('lisa')
- 1
- # returns index of first instance
- simpsons.index('itchy')
- 4
列表切片:
- weekdays = ['mon', 'tues', 'wed', 'thurs', 'fri']
- # 第一个元素,索引值为0
- weekdays[0]
- 'mon'
- # 前三个元素,索引值为0、1、2,,其中0可以省略
- print(weekdays[0:3] == weekdays[:3])
- weekdays[0:3]
- True
- ['mon', 'tues', 'wed']
- # 从索引值为3的元素的位置到最后位置的元素
- weekdays[3:]
- ['thurs', 'fri']
- # 最后一个元素
- weekdays[-1]
- 'fri'
- # 每隔两个元素进行存取
- weekdays[::2]
- ['mon', 'wed', 'fri']
- # 反转列表,等价于list(reversed(weekdays))
- weekdays[::-1]
- ['fri', 'thurs', 'wed', 'tues', 'mon']
- # 对列表进行排序 (原地修改列表但不返回列表)
- simpsons.sort()
- simpsons
- ['homer', 'itchy', 'krusty', 'lisa', 'marge', 'scratchy']
- # 反向排序
- simpsons.sort(reverse=True)
- simpsons
- ['scratchy', 'marge', 'lisa', 'krusty', 'itchy', 'homer']
- # 根据传入的规则排序,以长度为例
- simpsons.sort(key=len)
- simpsons
- ['lisa', 'marge', 'itchy', 'homer', 'krusty', 'scratchy']
- # 返回已排序列表(并不修改原列表),可以传入排序规则:
- simpsons = [ 'krusty', 'itchy', 'scratchy', 'lisa']
- sorted(simpsons, key=len)
- ['lisa', 'itchy', 'krusty', 'scratchy']
- # 对象引用
- num = [10,20,30,40,50]
- same_num = num
- # 会同时修改两个对象
- same_num[0] = 0
- print(num)
- print(same_num)
- [0, 20, 30, 40, 50]
- [0, 20, 30, 40, 50]
- # 检查是否是同一个对象
- num is same_num
- True
- # 判断两个对象是否相等
- num == same_num
- True
#8. 元组
- 元组性质: 有序,可迭代,不可变,可以包含多个数据类型
- 类似于列表, 但不可变
- # 直接创建一个元组
- digits = (0, 1, 'two')
- # 将列表转化为元组
- digits = tuple([0, 1, 'two'])
- # 元组第三个位置的元素
- digits[2]
- 'two'
- # 元组长度
- len(digits)
- 3
- # 统计元组中元素出现的次数
- digits.count('two')
- 1
- # 返回该元素第一次出现的索引值
- digits.index(1)
- 1
- # 元组不可修改,下面语句会报错
- # digits[2] = 2
#9. 字符串
- 字符串性质: 可迭代,不可变
- # 创建字符串
- s = 'I like you'
- # 字符串切片
- s[0]
- 'I'
- # 长度
- len(s)
- 10
字符串切片类似于列表切片:
- s[:6]
- 'I like'
- s[7:]
- 'you'
- s[-1]
- 'u'
字符串方法 (并不修改原字符串):
- s.lower()
- 'i like you'
- s.upper()
- 'I LIKE YOU'
- s.startswith('I')
- True
- s.endswith('you')
- True
- # 返回在字符串中的最左位置,如果没有找到,就返回-1
- s.find('like')
- 2
- # 字符串替换
- s.replace('like', 'love')
- 'I love you'
字符串分割:
- # 返回一个被空白字符分割的字符串列表
- s.split(' ')
- ['I', 'like', 'you']
- # 返回一个被特定字符分割的字符串列表
- s2 = 'a, an, the'
- s2.split(',')
- ['a', ' an', ' the']
- # 字符串拼接
- stooges = ['larry', 'curly', 'moe']
- ' '.join(stooges)
- 'larry curly moe'
- # + 也可作字符串拼接
- s3 = 'The meaning of life is'
- s4 = '42'
- s3 + ' ' + s4
- 'The meaning of life is 42'
- # 移除开始和结尾的空白字符
- s5 = ' ham and cheese '
- s5.strip()
- 'ham and cheese'
格式化字符串:
- # 方法1
- 'raining %s and %s' % ('cats', 'dogs')
- 'raining cats and dogs'
- # 方法2
- 'raining {} and {}'.format('cats', 'dogs')
- 'raining cats and dogs'
#10. 字典
- 字典性质: 无序,可迭代,可变,可以包含多个数据类型
- 由键-值对组成
- 键必须是唯一的, 可以是字符串、数字、元组
- 值可以是任何类型
字典的键与值:
- # 创建一个空字典(两种方法)
- empty_dict = {}
- empty_dict = dict()
- # 创建字典(两种方法)
- family = {'dad':'homer', 'mom':'marge', 'size':6}
- family = dict(dad='homer', mom='marge', size=6)
- family
- {'dad': 'homer', 'mom': 'marge', 'size': 6}
- # 传入键名,获取字典键值
- family['dad']
- 'homer'
- # 返回字典的键-值对数目
- len(family)
- 3
- # 检查字典中是否含有某个键名
- 'mom' in family
- True
- # 返回键名
- family.keys()
- dict_keys(['size', 'dad', 'mom'])
- # 返回键值
- family.values()
- dict_values([6, 'homer', 'marge'])
- # 返回键值对
- family.items()
- dict_items([('size', 6), ('dad', 'homer'), ('mom', 'marge')])
修改字典:
- # 增加一个键-值
- family['cat'] = 'snowball'
- family
- {'cat': 'snowball', 'dad': 'homer', 'mom': 'marge', 'size': 6}
- # 编辑一个已存在的键-值
- family['cat'] = 'snowball ii'
- family
- {'cat': 'snowball ii', 'dad': 'homer', 'mom': 'marge', 'size': 6}
- # 删除一个键-值
- del family['cat']
- family
- {'dad': 'homer', 'mom': 'marge', 'size': 6}
- # 字典值可以是列表
- family['kids'] = ['bart', 'lisa']
- family
- {'dad': 'homer', 'kids': ['bart', 'lisa'], 'mom': 'marge', 'size': 6}
- # 增加多个键-值
- family.update({'baby':'maggie', 'grandpa':'abe'})
- family
- {'baby': 'maggie',
- 'dad': 'homer',
- 'grandpa': 'abe',
- 'kids': ['bart', 'lisa'],
- 'mom': 'marge',
- 'size': 6}
获取键值的一个更安全的方法(get):
- # 获取字典值,等价于family['mom']
- family.get('mom')
- 'marge'
- # 如果字典中不存在,返回一个默认值
- family.get('grandma', 'not found')
- 'not found'
#11. 集合
- 集合性质: 无序, 可迭代, 可变, 可以包含多个数据类型
- 集合中元素是唯一的(字符串, 数字, or 元组)
- 类似于字典,只有键名,没有键值
创建集合:
- # 创建空集合
- empty_set = set()
- # 创建集合
- languages = {'python', 'r', 'java'}
- # 将列表转化为集合
- snakes = set(['cobra', 'viper', 'python'])
集合运算:
- # 交集
- languages & snakes
- {'python'}
- # 并集
- languages | snakes
- {'cobra', 'java', 'python', 'r', 'viper'}
- # 差集
- languages - snakes
- {'java', 'r'}
修改集合 (并不返回集合):
- # a增加元素
- languages.add('sql')
- languages
- {'java', 'python', 'r', 'sql'}
- # 增加一个已存在的元素
- languages.add('r')
- languages
- {'java', 'python', 'r', 'sql'}
- # 移除元素
- languages.remove('java')
- languages
- {'python', 'r', 'sql'}
- # 移除所有元素
- languages.clear()
- languages
- set()
从列表中获取唯一元素的排序列表:
- sorted(set([9, 0, 2, 1, 0]))
- [0, 1, 2, 9]
#12. 函数
定义没有参数、没有返回值的函数:
- def print_text():
- print('this is text')
- # 调用函数
- print_text()
- this is text
定义含有一个参数、含有一个返回值的函数:
- # 定义函数
- def square_this(x):
- return x**2
- # 调用函数
- result = square_this(3)
- print(result)
- 9
定义含有两个位置参数(非默认值)、一个关键字参数(默认值)的函数:
- def calc(a, b, op='add'):
- if op == 'add':
- return a + b
- elif op == 'sub':
- return a - b
- else:
- print('valid operations are add and sub')
- # 调用函数
- calc(10, 4, op='add')
- 14
- # 通过参数位置来传入参数值
- calc(10, 4, 'add')
- 14
- # ‘op’关键字参数为默认值
- calc(10, 4)
- 14
- calc(10, 4, 'sub')
- 6
- calc(10, 4, 'div')
- valid operations are add and sub
如果您尚未编写函数体,请使用pass作为占位符:
- def stub():
- pass
函数含有两个返回值:
- def min_max(nums):
- return min(nums), max(nums)
- # 多个返回值可以绑定到类型为元组的变量上
- nums = [1, 2, 3]
- min_max_num = min_max(nums)
- min_max_num
- (1, 3)
- # 多个返回值绑定到多个变量上()通过元组解包的方式
- min_num, max_num = min_max(nums)
- print(min_num)
- print(max_num)
- 1
- 3
#13. 匿名(Lambda)函数
- 主要用于临时定义由另一个函数使用的函数
定义函数:
- # 最常见的定义函数的方法——def
- def squared(x):
- return x**2
- # 使用lambda定义函数的方法,等价于def函数定义
- squared = lambda x: x**2
依据字符串最后一个元素的顺序,将字符串列表进行排序:
- # 使用def函数定义的方法
- simpsons = ['homer', 'marge', 'bart']
- def last_letter(word):
- return word[-1]
- sorted(simpsons, key=last_letter)
- ['marge', 'homer', 'bart']
- # 使用lambda函数定义的方法
- sorted(simpsons, key=lambda word: word[-1])
- ['marge', 'homer', 'bart']
#14. For循环与While循环
for 循环:
- # for循环
- fruits = ['apple', 'orange']
- for fruit in fruits:
- print(fruit.upper())
- APPLE
- ORANGE
- # 对字典的循环,依次打印字典的键名和键值
- family = {'dad':'homer', 'mom':'marge', 'size':6}
- for key, value in family.items():
- print(key, value)
- size 6
- dad homer
- mom marge
- # 对列表的循环,依次打印列表元素的索引值和元素
- for index, fruit in enumerate(fruits):
- print(index, fruit)
- 0 apple
- 1 orange
while
循环:
- count = 0
- while count < 5:
- print('This will print 5 times')
- count += 1 # 等价于 'count = count + 1'
- This will print 5 times
- This will print 5 times
- This will print 5 times
- This will print 5 times
- This will print 5 times
#15. 生成式
列表生成式:
- # 通过for循环获得一个列表,该列表的每个元素是原始列表对应元素的三次方
- nums = [1, 2, 3, 4, 5]
- cubes = []
- for num in nums:
- cubes.append(num**3)
- cubes
- [1, 8, 27, 64, 125]
- # 使用列表生成式
- cubes = [num**3 for num in nums]
- cubes
- [1, 8, 27, 64, 125]
- # 如果只想获得偶数值的列表
- # 语法: [expression for variable in iterable if condition]
- cubes_of_even = [num**3 for num in nums if num % 2 == 0]
- cubes_of_even
- [8, 64]
集合生成式:
- fruits = ['apple', 'banana', 'cherry']
- unique_lengths = {len(fruit) for fruit in fruits}
- unique_lengths
- {5, 6}
字典生成式:
- fruit_lengths = {fruit:len(fruit) for fruit in fruits}
- fruit_lengths
- {'apple': 5, 'banana': 6, 'cherry': 6}
- fruit_indices = {fruit:index for index, fruit in enumerate(fruits)}
- fruit_indices
- {'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的更多相关文章
- 10分钟学会Python函数基础知识
看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...
- 10分钟学会Linux
10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...
- 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 ...
- 10分钟学会VS NuGet包私有化部署
前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(ne ...
- 【译】10分钟学会Pandas
十分钟学会Pandas 这是关于Pandas的简短介绍主要面向新用户.你可以参考Cookbook了解更复杂的使用方法 习惯上,我们这样导入: In [1]: import pandas as pd I ...
- UWP开发入门(十九)——10分钟学会在VS2015中使用Git
写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支持.考虑到现在Git很火,作为微软系的程序员也不得不学一点防身,以免被开 ...
- 10分钟学会Less开发环境搭建与初体验
Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Le ...
- 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发
前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
随机推荐
- 简单的sequence unpacking
t = (1, 2, ‘hl’) x, y, z = t 上述方法可用于任何sequence
- spring基于接口的代理报错
报错: 1.在service层加上@Transactional注解.浏览器端报错(如下),eclipse控制台无信息 2.去掉@Transactional注解,无报错,但是数据库没有信息插入. 解决方 ...
- zepto.js按需载入模板对象
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/Joyhen/article/details/34412103 Zepto.js 是支持移动WebKi ...
- MyBatis框架的文件配置
第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...
- IDEA中配置国内maven库镜像(阿里云)
配置maven中settings.xml,在mirrors段内增加镜像配置,配置后如下: <mirror> <id>nexus-aliyun</id> <mi ...
- TZOJ 2478 How many 0's?(数位DP)
描述 A Benedict monk No.16 writes down the decimal representations of all natural numbers between and ...
- alter table 修改表结构规范
use database_name; ) )), ADD INDEX index_time ( `timeId` ); # 添加主键: alter table table_name add prima ...
- 万能的pdftk
pdftk (the pdf toolkit) 是一个功能强大的命令行的 PDF 文件编辑软件,可以合并/分割 PDF 文档.对 PDF 文件加密解密.给 PDF 文档加水印.从 PDF 文档中解出附 ...
- git学习记录——分支管理和多人协作
在公司里难免会出现多个人一起工作,这就需要构建多个分支派发给多个人去干活 这就产生一个需求,分支管理 分支的创建,合并和删除 其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制 ...
- 2019.10.22 csp-s模拟测试82 反思总结
重来重来,刚刚就当什么都没发生 今天的题属实有些迷惑,各种意义上…总之都很有难度吧.不满归不满,这套题的确不是什么没有意义的题目. 为了考验自己的学习能力记忆力,决定不写题解,扔个代码完事了 其实是懒 ...