数据结构 函数 条件 和 循环

  • 数据结构
    • 元组
    • 字典
  • 循环
    • while循环
    • 循环控制 break 和 continue
    • 嵌套循环
  • 自定义函数

元组

  • 元组与列表相似,是若干值组成的一个序列
  • 元素中的值可以是任意数据类型
  • 元组的一个重要特征是不可变的
  • 元组的数据结构不需要改变,因而在内存使用和表现上,元组比列表更有效率
  • 元组的元素不重复
# 列表
l = ['l','i','s','t']
type(l)
list
# 元组中的括号可以省略,但括号有助于快速识别元组
t = ('t','u','p','l','e')
type(t)
tuple
# 类型转换 tuple() 函数可以把其他数据类型转换为元组
print(tuple(l))
type(tuple(l))
('l', 'i', 's', 't')





tuple

索引和切片等列表操作 也可以适用在元组上

t[2:4]
('p', 'l')

元组里的元素不可修改

l[0] = 'L'
l
['L', 'i', 's', 't']
# 但是元组元素不可修改
t[0] = 'T'
t
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-7-035107ff84ae> in <module>()
      1 # 但是元组元素不可修改
----> 2 t[0] = 'T'
      3 t


TypeError: 'tuple' object does not support item assignment

字典

  • 字典是无序的键值对集合
  • 字典和列表相似,列表由整数作为索引,字典由key作为索引
  • 字典和列表都可以通过[]进行选择,更新和删除
### 在一对一查找方面,字典比列表更方便高效
countries = ['spain', 'france', 'germany', 'italy'] #国家
capitals = ['madrid', 'paris', 'berlin', 'rome'] #首都
# 打印德国首都
ind_ger = countries.index('germany')
print(capitals[ind_ger])
berlin
# 用字典可以更好的实现这个功能
europe = {'spain':'madrid', 'france':'paris','germany':'berlin','italy':'rome'}
print(europe['germany'])
berlin

获取字典的keys 和 values

# 用keys方法 获取字典的索引
europe.keys()
dict_keys(['spain', 'france', 'germany', 'italy'])
# 用values方法获取字典的值
europe.values()
dict_values(['madrid', 'paris', 'berlin', 'rome'])
# 用items方法获取 key-values键值对 
europe.items() # 每个元素是元组
dict_items([('spain', 'madrid'), ('france', 'paris'), ('germany', 'berlin'), ('italy', 'rome')])

通过key获取value值

# 输出france对应的值
europe['france']
'paris'
# 也可以使用get方法来获取key对应的值
europe.get('france')
# 需要注意的是 当key不存在时 使用[]将出错,使用get不会出错,key不存在,get默认返回None
'paris'
# 检查key是否在字典里
'britian' in europe
False
# 如果key不在字典里,get方法默认返回none
print(europe.get('britian'))
None
# 也可以自定义返回值
europe.get('britian','unknown')
'unknown'

字典的增删改

# 增加
europe['britian'] = 'landon'
europe
{'britian': 'landon',
 'france': 'paris',
 'germany': 'berlin',
 'italy': 'rome',
 'spain': 'madrid'}
# 修改
europe['britian'] = 'Landon'
europe
{'britian': 'Landon',
 'france': 'paris',
 'germany': 'berlin',
 'italy': 'rome',
 'spain': 'madrid'}
# 删除某个键值对
del(europe['britian'])
europe
{'france': 'paris', 'germany': 'berlin', 'italy': 'rome', 'spain': 'madrid'}

案例:找出一个文本中最高词频的单词

# 1. 获取单词列表
# 2. 初始化空字典
# 3. 构建单词和词频的列表 key为单词 value为词频 如果不存在 默认为0 存在一次加1
# 4. 在字典中查找词频最高的词
text = '''the clown ran after the car and the car ran into the tent 
        and the tent fell down on the clown and the car'''
words = text.split()
counts = {}
for word in words:
    counts[word] = counts.get(word,0) + 1
print(counts)
bigcount = None
bigword = None
for word,count in counts.items():
    if bigcount is None or count > bigcount:
        bigword = word
        bigcount = count
print(bigword,bigcount)
{'the': 7, 'clown': 2, 'ran': 2, 'after': 1, 'car': 3, 'and': 3, 'into': 1, 'tent': 2, 'fell': 1, 'down': 1, 'on': 1}
the 7

循环

while循环

  • 在循环开始之前对变量初始化
  • 设置满足进入循环的条件,不满足要退出循环
  • 在循环体中重复执行响应的操作,并更新变量值
  • 循环结束时查看最终变量
# 打印1到10的证书
num = 1# 循环开始初始化变量
while num <= 10:#进入循环或退出循环的条件
    print(num)
    num = num + 1#更新变量的值
1
2
3
4
5
6
7
8
9
10

循环控制

  • 使用break终止当前循环
  • 使用continue终止当前迭代,继续下一次迭代
# 计算从1到20的整数和,当和大于100时,终止计算
# 1. 初始化变量 sum 和 number
sum = 0
number = 0
while number <= 20:
    number += 1
    sum += number
    if sum > 100:
        break
print('最后一个数是'+str(number))
print('和是'+str(sum))
最后一个数是14
和是105
# 对从1到20 除了10 和11 外的整数进行相加
sum = 0
number = 0
while number < 20:
    number += 1
    if number == 10 or number == 11:
        continue
    sum += number
print('和是'+str(sum))
和是189

嵌套循环

  • 一个循环体中还有循环就是嵌套循环
  • 第一个循环称为外循环,内部的循环称为内循环
  • 外循环每迭代一次,内部循环都会执行它的全部迭代
# 使用嵌套循环打印99乘法表
for i in range(1,10):
    for j in range(1,10):
        print(format(i * j,'4d'),end='') #4d表示每次打印 占据4个宽度 end以空格作为结束 而不是默认的换行
    print('\n')#内循环一次 打印一次换行
   1   2   3   4   5   6   7   8   9

   2   4   6   8  10  12  14  16  18

   3   6   9  12  15  18  21  24  27

   4   8  12  16  20  24  28  32  36

   5  10  15  20  25  30  35  40  45

   6  12  18  24  30  36  42  48  54

   7  14  21  28  35  42  49  56  63

   8  16  24  32  40  48  56  64  72

   9  18  27  36  45  54  63  72  81

自定义函数

  • 自定义函数,需要定义函数名和相应的执行语句块,然后就可以在程序中反复调用
  • 声明一个函数用def开始,后跟函数名参数放在括号中没参数括号内容为空但不能省略 并用冒号该行,之后是代表函数体的代码组,需要缩进
  • 调用函数时函数名加括号,需要传递参数,在括号内写入需要传递的参数
  • 如果需要指定返回值,在函数体中用return返回需要返回的内容

函数可以没有指定参数也可以没有返回值

# 定义函数 无参无返回值
def say_hello():
    print('hello')
# 使用函数
say_hello()
# 没有明确返回值,函数默认返回None
print(say_hello());
hello
hello
None

函数内部也可以调用函数

def say_hello_twice():
    say_hello()
    say_hello()
say_hello_twice()
hello
hello
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容