程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

PythonDay03---条件、循环语句、Dict(增删改查)和Set

发布于2019-08-06 10:40     阅读(585)     评论(0)     点赞(5)     收藏(0)


Python条件、循环语句、Dict(增删改查)和Set

一、Python的条件判断和循环

1.Python之if语句

语法: if + 空格 + 表达式,然后用:表示代码块开始。
eg:

age = 20
if age >= 18:
    print('your age is', age)
    print('adult')
print('END')

结果:

your age is 20
adult
END

注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

2.Python之if-else语句

eg:

if age >= 18:
    print('adult')
else:
    print('teenager')

注意: else 后面有个:

3.Python之if-elif-else语句

eg:

age = 20
if age >= 6:
    print('teenager')
elif age >= 18:
    print('adult')
else:
    print('kid')

结果:

teenage

特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了

4.Python之 for循环

说明:Python的 for 循环可以依次把list或tuple的每个元素迭代出来。
eg:

L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print(name)

结果:

Adam
Lisa
Bart

总结:这个for循环和Java里面的for-each循环有点类似

5.Python之while循环

eg:利用while循环计算100以内奇数的和

sum = 0
x = 1
while x < 100:
    sum = sum + x
    x = x + 2
print(sum)

结果:2500

6.Python之break和continue

用法和c语言的一样

7.Python之循环嵌套

eg:对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)。

for x in range(1, 10):
    for y in range(0, 10):
        if x < y:
            print(x * 10 + y)

结果:

12
13
14
15
16
17
18
19
23
24
25
26
27
28
29
34
35
36
37
38
39
45
46
47
48
49
56
57
58
59
67
68
69
78
79
89

二、Dict

1.Dict简介和建立

(1)list 和 tuple 可以用来表示顺序集合,而dict是无序集合。所以显示dict时,key-value的顺序可能不一样。另外,dict的元素是以key-value,即键值对的形式存在。
(2)dict的查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
(3)dict是按 key 查找,所以,在一个dict中,key不能重复
(4)dict的 key 的元素必须不可变,也就是说key不能为list,而value无所谓。
(5)建立dict语法:花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。
eg:创建一个dict

d = {
    'wang' : 100,
    'zhao' : 90,
    'li' : 80
}
print(d)

结果:{'wang': 100, 'zhao': 90, 'li': 80}

建议:对于list、tuple、dict集合中字符串元素最好是用单引号不用双引号,因为,显示list、tuple和dict中的字符串时,是以单引号的形式显示的,所以,我们用单引号统一比较好。print函数无所谓。
(4)由于dict也是集合,len() 函数可以计算任意集合的大小:
eg:

d = {
    'wang' : 100,
    'zhao' : 90,
    'li' : 80
}
len(d)

结果:3
注意: 一个 key-value 算一个,因此,dict大小为3。

2.Dict添加元素

dict添加元素有两种方法:
(1)语法:d[key] = value
说明:如果dict中有该key,则用value替换原来的value,若dict不存在该key,则dict添加key:value这对元素。
eg:

d = {
    'wang' : 100,
    'zhao' : 90,
    'li' : 80
}
d['wang'] = 50
print(d)
d['tian'] = 20
print(d)

结果:

{'wang': 50, 'zhao': 90, 'li': 80}
{'wang': 50, 'zhao': 90, 'li': 80, 'tian': 20}

(2)用setdefault(key, value = None)方法。
eg:

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
print(d)
d.setdefault('wang', 30)
print(d)
d.setdefault('xu')
print(d)
d.setdefault('tian', 50)
print(d)

结果:

{'wang': 100, 'zhao': 80, 'li': 60}
{'wang': 100, 'zhao': 80, 'li': 60}
{'wang': 100, 'zhao': 80, 'li': 60, 'xu': None}
{'wang': 100, 'zhao': 80, 'li': 60, 'xu': None, 'tian': 50}

注意:若key存在,用setdefault(key, value = None)方法是不能更改dict的元素的,另外,value默认为None

3.dict删除元素

删除dict中的元素有5中方法:
(1)用pop(key)方法
说明:这与列表的pop()方法不同,dict的pop()方法必须得给它传一个key值,如果字典里没有该key,则会报错。也可以用 pop(key,‘返回值’) 来指定返回值,此时,当找不到key的时候,则不会报错,会将指定的返回值返回。
eg:key不存在,并且没有设置返回值

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
d.pop('tian')

结果:

Traceback (most recent call last):
  File "Hello.py", line 6, in <module>
    d.pop('tian')
KeyError: 'tian'

eg:

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
a = d.pop('tian', '没有该key')
print(a)
print(d)
d.pop('wang')
print(d)

结果:

没有该key
{'wang': 100, 'zhao': 80, 'li': 60}
{'zhao': 80, 'li': 60}

(2)popitem()方法:
说明:此方法类似于列表的pop()方法,用来随机删除一个元素,返回删除的那个元素的(健,值)
eg:

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
x,y = d.popitem()
print(x, ':', y)
print(d)

结果:

li : 60
{'wang': 100, 'zhao': 80}

(3)del dict[key]语句
说明:此方法用来删除字典种指定key以及它所对应的value,如果找不到该key,则会报错。
eg:

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
del d['wang']
print(d)

结果:{'zhao': 80, 'li': 60}
(4)clear()方法:
说明:该方法与列表的clear()方法类似,用来清空字典。
eg:

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
d.clear()
print(d)

结果:{}
(5)del dict语句
说明:删除该dict
eg:

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
del d
print(d)

结果:

Traceback (most recent call last):
  File "Hello.py", line 7, in <module>
    print(d)
NameError: name 'd' is not defined
4.更改dict元素

语法:dict[key] = value
上面第4点,删除dict元素的(1)中提到了,这里不再说明。

5.访问Dict

语法:使用 d[key]的形式来查找对应的 value
eg:

d = {
    'wang' : 100,
    'zhao' : 90,
    'li' : 80
}
print(d['wang'])

结果:100
若访问不存在的value会报KeyError的错误,那怎么避免?有两种方法
(1)先判断一下 key 是否存在,用 in 操作符:

if key in d:
    print(d[key])

(2) 使用dict本身提供的一个get (key, value=None)方法,在Key不存在的时候,返回None, 如果设置第二个参数的值,如果key不存在,则会返回你指定的值:
eg:print(d.get('wang'))结果:100
eg:print(d.get('xu'))结果:None
eg:接收一个列表,找出其中数量最多的元素,如果元素数量相同,选择列表中靠前的元素输出。

counts={}
num=eval(input())
for i in num:
    counts[i]=counts.get(i,0)+1  # 如果元素已经存在,会加一,不存在,设置为一,很巧妙
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
num, a=items[0]
print(int(num))
6.得到key和value遍历Dict

语法:keys()方法和values()方法

d = {
    'wang': 100,
	'zhao': 80,
	'li': 60
}
print(d.keys())
print(list(d.keys()))
print(d.values())
print(list(d.values()))
for key in d.keys():
    print(key)
for value in d.values():
    print(value)

结果:

dict_keys(['wang', 'zhao', 'li'])
['wang', 'zhao', 'li']
dict_values([100, 80, 60])
[100, 80, 60]
wang
zhao
li
100
80
60

注意:用for循环来遍历dict,只会显示其key的值。

eg:

d = {
    'wang' : 100,
    'zhao' : 90,
    'li' : 80
}
for key in d:
    print(key)

结果:

wang
zhao
li

三、Set

1.建立Set

说明:set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。这样看来,set是为dict的key值量身定做的。创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素。
eg:

d = ['wang', 'zhao', 'li', 'li']
s = set(d)
print(s)

结果:

{'zhao', 'li', 'wang'}

注意:可以看到set会自动去掉重复的元素。

2.访问Set元素

说明:由于set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中。
eg:

d = ['wang', 'zhao', 'li', 'li']
s = set(d)
print('wang' in s)

结果:True

3.Set的特点

(1)set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
(2)set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
注意:有的人可能会问,list不是可变的吗?list确实是可变的,但是执行s = set(d)时,d的元素是固定的,d把元素复制给s,你再改变d的元素是不会影响s中的元素的。而dict不一样,假如dict的key可以是list的话,假设dict的key是list,你可以更改list中的元素。如果您还不能理解,见如下代码:

d = ['wang', 'zhao', 'li']
s = set(d)
d[1] = 'xu'
print(s)
s = set(d)
print(s)

结果:

{'li', 'zhao', 'wang'}
{'xu', 'li', 'wang'}

(3)set的这些特点,可以应用在哪些地方呢?
假设我们让用户输入星期一至星期日的某天,如何判断用户的输入是否是一个有效的星期呢?
eg:

x = 'MON'      #假设x是用户输入的日期
s = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
if x in s:
    print(x)
else:
    print("您输入的日期错误!")

结果:MON

还可以用来去重,比如你用爬虫爬取了一些链接,里面可能有重复的链接,这样,你完全可以将一个list转为set来去掉这些重复的链接。

4.遍历Set

用for循环来遍历set
eg:

d = ['wang', 'zhao', 'li']
s = set(d)
for name in s:
    print(name)

结果:

wang
li
zhao
5.Set之添加元素

(1)添加元素,用add()方法
eg:

d = ['wang', 'zhao', 'li']
s = set(d)
print(s)
s.add('xu')
print(s)

结果:

{'li', 'zhao', 'wang'}
{'xu', 'li', 'zhao', 'wang'}

(2)用update()方法
eg:

s1 = set([1, 2, 3])
s2 = set(['a', 'b'])
s1.update(s2)
print(s1)

结果:{'a', 1, 2, 3, 'b'}

6.Set之删除元素

(1)删除元素,用remove()方法.
eg:

d = ['wang', 'zhao', 'li']
s = set(d)
print(s)
s.remove('li')
print(s)

结果:

{'li', 'wang', 'zhao'}
{'wang', 'zhao'}

(2)pop( )方法随机删除(蛮简单,不写代码了)
(3)clear( )方法 清空集合元素(蛮简单,不写代码了)



所属网站分类: 技术文章 > 博客

作者:爬虫soeary

链接:https://www.pythonheidong.com/blog/article/7817/8c59e1965fbc593dd49b/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)