欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Quick_Python_1

程序员文章站 2022-05-04 18:08:12
...

Quick_Python_1

Markdown By 云天

✔Compare while learning seems to be the best, thus each example contains methods of list and dict

Index and slice

首先,我们讲解索引切片操作。

你可以阅读代码,自己试着分析五行print函数会打印出什么结果:

score = [88, 90, 78, 60, 77]

print(score[ : ])
print(score[0])
print(score[-3])
print(score[1:3])
print(score[1:-1])

[88, 90, 78, 60, 77]
88
78
[90, 78]
[90, 78, 60]

我们可以总结出三点主要结论:

(1)同C语言的数组很像,列表的下标也是从0开始;不过列表提供-1这种反向查找的方式;

(2)**:**即为打印全部列表的元素;

(3)a : b打印的是第a个到第(b-1)个元素

可是当我们尝试用相同的方式索引列表时,却出现了报错!这是为什么呢?

# Error !!! Why ???
my_dict = {'Chinese':80, 'Math':90, 'English':95}
print(my_dict[1])

原因要追溯回我们之前的讲解。字典的键值对是无序的,因此不能用下标式的索引寻找字典的元素。而我们知道键映射值,想到可以去索引键,以此获取值。

# Correct method
my_dict = {'Chinese':80, 'Math':90, 'English':95}
# print(my_dict['Chinese'])

# know something about program loop here
# i represents the KEY
for i in my_dict:
    print(i)

Chinese
Math
English

上面代码块中的程序用到了循环这种控制流,大家可以尝试阅读,后面我们会讲解各种控制流。

my_dict = {'Chinese':80, 'Math':90, 'English':95}
print(my_dict.get('Math'))

90

Append

本模块讲解添加元素的操作:

score = [88, 90, 78, 60, 77]

score.append(90)
print(score)

[88, 90, 78, 60, 77, 90]

我们可以看到,通过append函数,元素被成功地添加到了已创建的列表的末尾。看来这个添加元素的方法是可用的。不过,如果我想将元素添加进列表元素之间的某个位置,应该怎么办呢?

这里给出一种较为简洁的方法,结合列表的切片添加操作完成,具体流程如下三步:

(1)对添加位置前面的列表部分切片;

(2)在切片下来的列表末尾使用append函数添加元素;

(3)使用extend函数拼接两个列表:(1)(2)形成的列表和添加位置后面的列表部分切片。

score = [88, 90, 78, 60, 77]

# slice along with append, anywhere
score_1 = score[0:3]
score_1.append(100)
score_1.extend(score[3:5])

print(score_1)

[88, 90, 78, 100, 60, 77]

在字典中添加元素的方法:

my_dict = {'Chinese':80, 'Math':90, 'English':95}
my_dict['AET'] = 100

print(my_dict)

{‘Chinese’: 80, ‘Math’: 90, ‘English’: 95, ‘AET’: 100}

Delete

本模块讲解删除元素的操作:

第一种方法,使用pop函数,类似栈的工作原理,pop函数返回列表中最后一个元素,并将其从列表中删除:

score = [88, 90, 78, 60, 77]

# pop() return the number at the end of the list, meanwhile, the list has already changed
print(score.pop())
print(score)

77
[88, 90, 78, 60]

第二种方法,使用del。在Python中,一种操作往往可以找到多种方法,不过我们使用的时候,找到自己喜欢的,并且高效的1-2种方式就好。我个人觉得del方法非常好用,如下:

# another way to delete, seem to be more convenient
score = [88, 90, 78, 60, 77]
del score[2:5]
print(score)

[88, 90]

my_dict = {'Chinese':80, 'Math':90, 'English':95}
del my_dict['Chinese']
print(my_dict)

{‘Math’: 90, ‘English’: 95}

Join

本模块讲解拼接元素的操作:

最简单的拼接元素的方法,在Python中用**“+”**就好,我们通过下面的代码可以看出,结果很好:

list_1 = [1, 2, 3]
list_2 = [4, 5, 6]
# direct way to join, just like executable pseudocode
list_3 = list_1 + list_2
print(list_3)

[1, 2, 3, 4, 5, 6]

但是在实际中,我们希望代码看起来简洁易懂一些,善于使用函数进行封装是很好的方法:

# use function extend() to join

list_1 = [1, 2, 3]
list_2 = [4, 5, 6]
list_1.extend(list_2)
print(list_1)

[1, 2, 3, 4, 5, 6]

Others

本模块讲解一些其他操作:

len函数用于获取列表的长度,你也许会在循环条件中用到它:

# get the length of the list. You will use it while writing a program loop
list_len = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(len(list_len))

9

下面的代码提供了一种检查元素的极好方法。试想,在实际应用中,这可能是一个长长的存储大量数据的列表。如何快速地检测一个元素是否在列表中呢:

# check check check
score = [88, 90, 78, 60, 77]

print(59 in score)
print(90 in score)

False
True

Tuple

元组一直是素未谋面。现在,我们已经对列表和字典有了较为深入的了解,可以谈谈元组啦。之前说,元组是特殊的列表,所以列表的很多操作,完全可以移植到元组上,不过…

看下面的报错信息:AttributeError: 'tuple' object has no attribute 'append'。我们要牢记,不可以对元组进行删改、添加元素等操作。总的来说,元组可以被你使用和索引,但不允许你去修改它!

这样的特性赋予元组一个独特的舞台。它是一种储存数据非常安全的形式。当你想存储一些重要信息,并且可预测它们在后续的工作中不会被更改,那你可以主动将 [ ] 改换为()。事实上,许多水平很高的工程师在实际工程中也是这样做的。

mytuple = (1, 2, 3, 4, 3, 2, 1)

print(mytuple[0])
print(len(mytuple))

mytuple.append(3)
# AttributeError: 'tuple' object has no attribute 'append'
# Tuple can be visited, but can not be modified, thus it is really a safe way to store the data

AttributeError Traceback (most recent call last)

in ()
3 print(len(mytuple))
4
----> 5 mytuple.append(3)
6 # AttributeError: ‘tuple’ object has no attribute ‘append’
7 # Tuple can be visited, but can not be modified, thus it is really a safe way to store the data

AttributeError: ‘tuple’ object has no attribute ‘append’

我们的第二课结束啦,Quick_Python_1 !

我们对列表与字典的各种操作有了较为深入的学习,操作包括索引、切片、添加、删除、拼接等。在此基础上,我们介绍了元组,并讲解了其应用环境。

接下来,为了让你尽快形成知识体系,我将在下一课中先行讲解Python的控制流,期待与你再见!

相关标签: Python 教程

推荐阅读