Python快速入门(一)

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) 

说明
多次执行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;
#Python
s=0
for i in range(10):
   s=s+i	

可以发现,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;
}

在Python中我需要这样写:

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

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

函数返回值

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值