当前位置:   article > 正文

Python快速入门(一)_python快速编程入门课本第35页

python快速编程入门课本第35页

Python快速入门(一)

欢迎来到 金柯的学习记录
此记录的编写目的是方便初次接触Python的人能够快速地掌握Python的常用语法,写出可以运行的代码,因而此文的措辞可能并不专业,还请读者留意。

变量

类型声明

与C++不同,Python中,变量的使用不需要提前声明其类型。例如,我需要一个整型变量 i ,在C++中,我需要这样写:

int i = 0;

    而在Python中,我只需要这样写:

    i=0

      请注意,在Python中,语句的结尾是不能写分号的,这一点需要注意。

      类型转换

      C++中,一旦 i 被声明为int型变量,它的类型就确定了,不能将其他类型的值赋给i(进行强制转换,无非是把其他类型的值转换成了int型),但Python允许这样做。

      指针

      C++通过以下语句声明一个ElemType类型、名字为 p 的指针:

      ElemType* p;

        而Python中,所有的变量,都是引用(与指针类似),请见下例:
        在这里插入图片描述

        由上图可以看出,对于值相等的简单的整型数值,赋值语句传递给变量a和b的,是同一个内存地址(在C++中,a和b就是指针了!),而给变量a赋新的值,并没有修改原内存的值,而是开辟了新的内存空间,并把该地址赋给了变量。对于复杂的整型数值,或其他复杂的类型,即便值相同,也会开辟不同的内存空间。

        总结一下:
        Python中的赋值语句,传递的都是对象在内存中的地址

        列表和元组

        列表

        Python以下语句声明了一个空列表,并把其地址传递给变量a

        a=[]

          可以把列表看作是一种指针数组,只不过里面的指针类型可以包含多种(C++的指针数组只允许一种类型),观察下图,你会对Python的引用和赋值有更深的印象。
          图片二

          • 向列表里添加元素
          1. 初始化时赋值
          a=[1,2,3,4,5,6,7,8,9,10]
            1. 在列表末尾添加
              list.append(elem)
            a=[]
            for i in range(1,11):
               a.append(i) 
            • 1
            • 2

            说明
            多次执行range(start,end,step)函数,最终会得到一串从start开始的、间隔为step的、小于end的所有数值所组成的串。默认情况下,start为0,step为1。(传参明明一致,却因执行次数不同而得到不同的结果,这种对象称为迭代器,这里不展开。)

            这里使用的append(elem)函数,是列表自带的函数,该函数会把elem元素添加到列表的末尾

            • 定位列表里元素的位置
              list.index(elem)

            图三可以观察到,index(elem)函数会返回elem元素在列表里的索引(索引是从0开始的),如果elem不在列表里,则会报错

            • 通过索引 i 访问对应的元素
              list[i]
            • 删除索引为 i 的元素
              list.pop(i)
              如下图所示
              图四
              默认情况下,i 为-1,删除倒数第一个元素
            • 在索引 i 处插入元素elem
              list.insert(i,elem)
              如下图所示
              图片五
              这些操作在线性表中是非常常见的,尤其是pop()和append()是在列表的末尾进行操作的,所以把列表作为栈是非常方便的(不用写入栈和出栈函数,可以不用关心栈顶在哪,只需要关心栈是否为空)。
            • 遍历列表内各元素
              在C++中,遍历线性表a的各个元素,通常是根据数组的大小n,创建一个变量 i ,使 i 在[0,n-1]内递增,最终通过 a[i] 实现。
              在Python中,除了这种方法,还可以按照下图所示的方法。
              图片六
              这样做,是因为列表本身是可迭代的(就和之前的range函数一样),这个看不懂的话,没关系,以后再说。

            元组

            元组形式上和列表是一样的,但是元组内的元素在初始化过后,就不能再改变了,请看下图。
            图片七
            图片八
            可以看到,尝试修改元组的元素,会引发错误;尝试给元组添加元素,也会引发错误。因而可以在程序中用元组来保护某些数据,使其只读,不可修改。

            基本语句

            if 语句

            图片七

            图片上展示了与(and)或(or)非(not)的使用方法,以及 if 语句的使用方法。请注意,每一个 if 语句之后都有一个冒号。C++中,else是跟最近的尚未配对的 if 组合的,而在Python中,else与哪一个 if 配对,取决于else和哪个if对齐(Python对缩进对齐的要求比C++强)。

            Python中没有if…goto…的语句(实际上有额外的包实现了这样的功能,有兴趣的话,可以搜索goto包),所以如果要想实现一次性跳出多重for循环或者while循环,需要自己设置额外的变量flag,来实现多重跳转。

            while语句

            图片八
            图片上展示了while循环的基本写法,请不要忘记了冒号,Python也有continue和break(continue可以跳过此后的所有语句,直接进行下一轮的循环,break可以跳出循环)。

            for 语句

            for语句和C++的相比差距最大,Python中for语句几乎都是和迭代器(或者可以迭代的对象)一起出现的,不需要指明起始、终止和递进。以下两段代码,实现的是同样的效果。

            /*C++*/
            int i=0,s=0;
            for(i=0;i<10;i++)
               s=s+i;
            • 1
            • 2
            • 3
            #Python
            s=0
            for i in range(10):
               s=s+i	
            • 1
            • 2
            • 3

            可以发现,Python更简洁,编写起来更快。continue和break的控制效果,对for循环也有用。

            函数及其返回值

            函数声明

            Python中声明函数,只需要使用关键字def,然后说明函数名和形参即可。例如我需要一个函数能完成以下功能: ∑ i = 1 n i   ( i ∈ Z ) \sum^{n}_{i=1}i \ (i\in Z) i=1ni (iZ)在C++中,我需要这样写:

            int sum(int n)
            {
               int i=0,s=0;
               for(i=1;i<=n;i++)
                   s=s+i;
               return s;
            }
            • 1
            • 2
            • 3
            • 4
            • 5
            • 6

            在Python中我需要这样写:

            def sum(n):
                s=0
                for i in range(1,n+1):
                    s=s+i
                return s
            • 1
            • 2
            • 3
            • 4

            可以注意到,Python里不需要声明函数返回值的类型,不过还请注意,不要忘记冒号。

            函数返回值

            Python中,函数的返回值虽然也只有一个,但由于其内容丰富(回想一下列表和元组),便可以返回多个值。请看以下示例。
            图片九
            补充说明:

            flag,top,elem=(True,7,8)

              这样的语句,可以自动地把True的值(其实是True的地址,后同)赋给flag,把7赋给top,把8赋给elem。能这样做的前提是,右侧有三个元素,左侧恰好也有三个变量。如果左右数量不匹配,则会:
              图片十
              把元组或者列表里的元素,直接分开赋给不同的变量,这样的过程称之为解压(unpack)。

              声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/843392
              推荐阅读
              相关标签
                

              闽ICP备14008679号