Python for Datawhale Task3

1. dict字典

1.1 字典的定义

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型,在其他语言中也成为了map,具有极快的查找速度。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成,即dict的基本格式为:
dict = {key1: value1, key2: value2, …}
注意:

  • 每个key是唯一索引,不在一个dict里重复出现
  • dict是没有顺序的,不能按照位置来查找

1.2 字典的创建

>>> d = { 'Bob':90, 'Tom':95, 'Alice':89}

1.3 字典的方法

  • 查找/替换value
>>> d['Bob']        #按照key值查找对应的value
90
>>> d['Bob'] = 80     #直接给key赋值,进行值的替换
>>> d['Bob']
80
>>> d['Lee']              #key不存在,dict会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Lee'

避免key不存在的错误,有两种办法,一是通过in判断key是否存在:

>>> 'Bob' in d
True
>>> 'Lee' in d
False

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

>>> d.get('Lee')       #key不存在,返回none
>>> d.get('Bob')
80
  • 添加key-value
>>> d['David']=99       #Python不关心key-value的的添加顺序,值关心key和value之间的关联关系
>>> print(d)
{'Bob': 80, 'David': 99, 'Alice': 89, 'Tom': 95}
  • 删除key-value
>>> d.pop('Tom')
95
>>> print(d)
{'Bob': 80, 'David': 99, 'Alice': 89}

和list比较,dict有以下几个特点:
1.查找和插入的速度极快,不会随着key的增加而变慢;
2.需要占用大量的内存,内存浪费多。
而list相反:
1.查找和插入的时间随着元素的增加而增加;
2.占用空间小,浪费内存很少。
Python内置的字典方法有以下

序号函数及描述
1dict.clear(),删除字典内所有元素
2dict.copy(),返回一个字典的浅复制
3dict.fromkeys(seq[, val]), 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
4dict.get(key, default=None),返回指定键的值,如果值不在字典中返回default值
5dict.has_key(key),如果键在字典dict里返回true,否则返回false
6dict.items(),以列表返回可遍历的(键, 值) 元组数组
7dict.keys(),以列表返回一个字典所有的键
8dict.setdefault(key, default=None),和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9dict.update(dict2),把字典dict2的键/值对更新到dict里
10dict.values(),以列表返回字典中的所有值
11pop(key[,default]),删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。
12popitem(),随机返回并删除字典中的一对键和值。

2. 集合

2.1 集合的特性

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

  • 重复元素在set中自动被过滤。
  • set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
  • set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

2.2 集合的创建

要创建一个set,需要提供一个list作为输入集合:

>>> s = set([1,2,3])
>>> s
{1, 2, 3}
>>> s = set([1,1,2,2,3,3])           #重复元素在set中被自动过滤
>>> s
{1, 2, 3}
>>> s1 = set([1,2,3])
>>> s2 =set([2,3,4])
>>> s1 & s2            #集合的交
{2, 3}
>>> s1 | s2            #集合的并
{1, 2, 3, 4}

2.3 集合的方法

  1. 添加元素。
    add(key)方法可以添加元素到set中,可以重复添加,但不会有效果。
>>> s.add(5)
>>> s
{1, 2, 3, 5}
>>> s.add(5)
>>> s
{1, 2, 3, 5}
  1. 删除元素
>>> s.remove(5)
>>> s
{1, 2, 3}

集合的其他方法

序号方法
1update(),更新多个值
2discard(),一处集合中元素,不在集合中不会报错
3pop(),随机移除一个元素
4clear(),清空集合
5计算集合中元素个数
6copy(),复制集合

3.判断语句

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:

if 判断条件:
    执行语句……
else:
    执行语句……

其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。

age = 19
if age >= 18:
    print("You are an adult.")
    print("Are you already?")
else:
    print("You are not an adult")

输出结果

You are an adult.
Are you already?

else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
if语句完整形式为:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

实例:

age = 16
if age >= 18:
    print("You are an adult.")
    print("Are you already?")
elif age >= 13:
    print("You are not an adult")
elif age >= 3:
    print("You are a child")
else:
    print("You are a baby")

输出结果:

You are not an adult

由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

num = 9
if num >= 0 and num <= 10:       # 判断值是否在0~10之间
    print('hello')
#输出结果 
hello
num = 10
if num < 0 or num > 10:           # 判断值是否在小于0或大于10
    print('hello')
else:
    print('undefine')
#输出结果
undefine
num = 8
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15): # 判断值是否在0~5或者10~15之间
    print('hello')
else:
    print('undefine')
#输出结果
undefine

4. 三目表达式

python中没有其他语言中的三元表达式,不过有类似的实现方法。

  1. if语句中三目运算符语法格式
    Python可以通过if’语句来实现三目运算符的功能,因此可以把这种if语句当做三目运算符,具体语法格式如下:
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
>>> x=3
>>> x = x+1 if x%2==1 else x
>>> print(x)
4
  1. 在三目运算符中放置多条语句方式
    -使用英文分号隔开,每条放置的语句都会执行,程序返回多条语句的返回值组成的元组。
>>> b = 1 + 1; "3 > 2";print('AAA') if 1 > 2 else print("BBB");2 + 2
'3 > 2'
BBB
4

-使用英文逗号隔开,每条语句都会执行,但程序只会返回第一条语句的返回值。

>>> b = 3 + 1, "3 > 2",print('AAA') if 1 > 2 else print("BBB"),2 + 2
BBB
  1. 嵌套三目运算符
>>> x = 3
>>> y = 5
>>> print("x=y") if x==y else print("x>y") if x>y else print("x<y")
x<y

5. 循环语句

Python提供了for循环和while循环(Python中没有do……while循环)

循环类型描述
while循环在给定的判断条件为 true 时执行循环体,否则退出循环体。
for循环重复执行语句
嵌套循环可以在while循环体中嵌套for循环

此外,Python还提供了循环控制语句,更改语句执行的顺序

控制语句描述
break语句在语句块执行过程中终止循环,并且跳出整个循环
continue语句在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass语句pass是空语句,是为了保持程序结构的完整性。
  1. while循环
    while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件:
    执行语句……
count = 0
while(count<9):
     print("The count is:",count)
     count = count + 1
print("done")
#输出
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
done

while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下:

#continue 和 break 用法

>>> i = 1
>>> while i < 10:
...     i +=1
...     if i%2 > 0:
...             continue      # 非双数时跳过输出
...     print(i)
#输出
2
4
6
8
10

>>> i = 1
>>> while 1:      # 循环条件为1必定成立
...     print(i)       # 输出1~10
...     i += 1
...     if i > 10:
...             break      # 当i大于10时跳出循环
#输出
1
2
3
4
5
6
7
8
9
10

无限循环
如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:

>>> while True:
...     num = input("please enter a number:")
...     print("you enter:",num)
...
please enter a number:2
you enter: 2
please enter a number:2
you enter: 2
please enter a number:4
you enter: 4

可以使用 CTRL+C 来中断无限循环

循环使用 else 语句
在 python 中,while … else 在循环条件为 false 时执行 else 语句块:

>>> count = 0
>>> while count < 5:
...     print(count,"is less than 5")
...     count = count + 1
... else:
...     print(count,"is not less than 5")
#输出
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5
  1. for循环
    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
    for循环的语法格式如下:
for iterating_var in sequence:
   statements(s)
>>> for letter in "python":
...     print(letter)
#输出
p
y
t
h
o
n
>>> names = ["bob","andy","alice"]
>>> for name in names:
...     print(name)
#输出
bob
andy
alice

另外一种执行循环的遍历方式是通过索引,如下实例:

>>> colors = ["green","blue","red"]
>>> for index in range(len(colors)):
...     print("color is:",colors[index])
#
color is: green
color is: blue
color is: red

在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。

for num in range(10,20):  # 迭代 10 到 20 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print('%d 等于 %d * %d' % (num,i,j)
         break            # 跳出当前循环
   else:                  # 循环的 else 部分
      print(num, '是一个质数')
#输出
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数
  1. 嵌套循环
    Python 语言允许在一个循环体里面嵌入另一个循环。
    Python for 循环嵌套语法:
for iterating_var in sequence:
   for iterating_var in sequence:
      statements(s)
   statements(s)

Python while 循环嵌套语法:

while expression:
   while expression:
      statement(s)
   statement(s)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值