zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    改善ERP的用户体验,个性化用户界面(Jquery 提供源码)
    一个美国富人在洗手间里陪女佣孩子吃晚餐的故事
    easyui datagrid 批量 提交 json 数据到服务器
    XML基础
    Asp.Net 上传大文件专题(1)概述:上传大文件的难点
    Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[下]
    Asp.Net上传大文件系列
    Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[上]
    XM操作类
    Asp.Net 上传大文件专题(4)利用ajax技术显示上传进度
  • 原文地址:https://www.cnblogs.com/chamge/p/11854632.html
Copyright © 2011-2022 走看看