python自学笔记(三)

1、字典(dict)

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d={key1:value1, key2:value2}

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组(?)一个键下的数据类型必须一样,否则就会报错。如下:

>>> dict={'Alice':'1234','Beth':'5678','Cecil':'3258'}
>>> dict='Alice':'1234','Beth':'5678','Cecil':'3258','yeye'}
  File "<stdin>", line 1
    dict={'Alice':'1234','Beth':'5678','Cecil':'3258','yeye'}
                                                            ^
SyntaxError: invalid syntax
>>> dict={'Alice':'1234','Beth':'5678','7':'3568'}
>>> dict={'Alice':'1234','Beth':'5678',7:'3568'}
>>> dict={'Alice':'1234','Beth':'5678','Cecil':'yeye'}
>>> dict={'Alice':'1234','Beth':'5678','7':'3568','yeye'}
  File "<stdin>", line 1

1.1 键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。如下:

>>> dict={'name': 'yeye', 'age': 18, 'class': 'first','name':'alice'}
>>> print("dict['name']:",dict['name'])
dict['name']: alice

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。如下:

>>> dict={['name']:'alice'.'age':18}
  File "<stdin>", line 1
    dict={['name']:'alice'.'age':18}
                               ^
SyntaxError: invalid syntax

1.2 访问字典

把相应的键放入到方括号中,如下:

>>> dict={'name':'yeye','age':20,'class':'first'}
>>> print("dict['name']:",dict['name'])
dict['name']: yeye
>>> dict['name']
'yeye'
>>> print("dict['age']:",dict['age'])
dict['age']: 20

如果用字典里没有的键访问,会有报错出现。如下:

>>> print("dict[sex]:",dict['sex'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'sex'

1.3 修改字典

向字典中添加新内容的方法是增加新的键 / 值对。如下:

>>> dict={'name':'yeye','age':20,'class':'first'}
>>> dict['age']=18;  #更新age
>>> dict['sex']='girl'  #添加信息
>>> dict
{'name': 'yeye', 'age': 18, 'class': 'first', 'sex': 'girl'}

1.4 删除字典元素

能删单一的元素也能清空字典,清空只需要dict.clear()命令或者del dict命令。显示删除一个字典用del命令。如下:

>>> dict={'name': 'yeye', 'age': 18, 'class': 'first', 'sex': 'girl'}
>>> del dict['name']  #删除键‘name'
>>> dict
{'age': 18, 'class': 'first', 'sex': 'girl'}
>>> dict.clear()
>>> dict
{}
>>> dict={'name': 'yeye', 'age': 18, 'class': 'first', 'sex': 'girl'}
>>> del dict  #删除字典
>>> dict
<class 'dict'>

2、集合(set)

集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式如下:

parame={’value01‘,’value02‘,…}
或者
set(’value‘)

如下:

>>> basket={'apple','banana','orange','apple','pear','orange'}
>>> print(basket)     #这里演示的是去重功能
{'pear', 'orange', 'apple', 'banana'}
>>> a=set('anvxhhvxhgsaa')
>>> b=set('wyqfyidhckxznaj')
>>> a
{'n', 'x', 's', 'a', 'v', 'g', 'h'}
>>> b
{'z', 'k', 'n', 'x', 'q', 'c', 'y', 'w', 'i', 'a', 'j', 'd', 'f', 'h'}
>>> a-b     #集合a中包含而集合b中不包含的元素
{'v', 's', 'g'}
>>> a|b     #集合a或b中包含的所有元素
{'z', 'y', 'i', 'v', 'g', 'd', 'f', 'h', 'n', 'k', 'x', 'q', 's', 'c', 'w', 'a', 'j'}
>>> a&b     #集合a和b中都包含的元素
{'x', 'a', 'h', 'n'}
>>> a^b     #不同时包含于a和b的元素
{'z', 'k', 'q', 'c', 'y', 'w', 'i', 's', 'v', 'j', 'g', 'd', 'f'}

2.1 添加元素

a.第一种方法,将元素x添加到集合s中,语法格式如下:

s.add(“x”)

b.第二种方法,也可以添加元素,且参数可以是列表,元组,字典等,语法如下:

s.update( x )

其中x可以有多个,用逗号隔开。

实例如下:

>>> set1={'apple','banana','pear'}
>>> set1.add('grape')
>>> print(set1)
{'pear', 'grape', 'apple', 'banana'}
>>> set1.update({1,2})
>>> print(set1)
{1, 2, 'grape', 'banana', 'apple', 'pear'}
>>> set1.update([1,4],[5,6])
>>> print(set1)
{1, 2, 4, 'grape', 5, 6, 'pear', 'apple', 'banana'}

2.2 移除元素

1)、

s.remove(x)

将元素x从集合s中移除,如果元素不存在,则会发生错误。如下:

>>> set1={'apple','banana','pear'}
>>> set1.remove('pear')
>>> print(set1)
{'apple', 'banana'}
>>> set1.remove('orange')   #不存在会发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'orange'

2)、还有一种方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:

s.discard(x)

实例如下:

>>> set1={'apple','banana','pear'}
>>> set1.discard('orange')  #不会发生错误
>>> print(set1)
{'pear', 'apple', 'banana'}

3)、设置随机删除集合中的一个元素,语法格式如下:

s.pop()

实例如下:

>>> set1={'apple','banana','pear'}
>>> x=set1.pop()
>>> print(x)
pear
>>> x=set1.pop()
>>> print(x)
apple
>>> set1={'apple','banana','pear'}
>>> set1.pop()
'pear'
>>> print(set1)
{'apple', 'banana'}

可以看到,多次执行结果都不一样。然而在交互模式,pop是删除集合的第一个元素(排序后的第一个元素)???(交互模式?)

2.3 计算集合元素个数

计算集合s元素的个数,语法格式如下:

len(s)

实例如下:

>>> set1={'apple','banana','pear'}
>>> len(set1)
3

2.4 清空集合

清空集合s,语法格式如下:

s.clear

实例如下:

>>> set1={'apple','banana','pear'}
>>> set1.clear()
>>> print(set1)
set()

3、条件控制

Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。

3.1 if语句

python中if语句的一般形式如下所示:

if condition_1:
  statement_block_1
elif condition_2:
 statement_block_2
else:
 tatement_block_3

  • 如果 “condition_1” 为 True 将执行 “statement_block_1” 块语句;
  • 如果 “condition_1” 为False,将判断 “condition_2”;
  • 如果"condition_2" 为 True 将执行 “statement_block_2” 块语句;
  • 如果 “condition_2” 为False,将执行"statement_block_3"块语句.

Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else

注意!

  • 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 在Python中没有switch – case语句。

实例如下:

>>> var1=100
>>> if  var1:
...     print("100为真")
...
100为真
>>> var2=0;
>>> if  var2:
...     print("0为假")
>>> print("good bye!")
good bye!

从结果可以看到由于变量 var2 为 0,所以对应的 if 内的语句没有执行。

以下为if中常用的操作运算符:

操作符描述
<小于
<=小于或等于
>大于
>=大于或等于
==等于,比较两个值是否相等
!=不等于

>>> #程序演示了==操作符
... #使用数字
... print(1==2)
False
>>> #使用变量
... x=1
>>> y=2
>>> print(x==y)
False

3.2 if 嵌套

在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。

if 表达式1:
 语句
if 表达式2:
  语句
elif 表达式3:
  语句
else:
  语句
elif 表达式4:
  语句
else:
  语句

实例如下:

num=int(input("输入一个数字:"))
if num%2==0:   #num除以2的余数是否为0
    if num%3==0:  #num除以3的余数是否为0
        print ("你输入的数字可以整除 2 和 3")
    else:
        print ("你输入的数字可以整除 2,但不能整除 3")
else:
    if num%3==0:
        print ("你输入的数字可以整除 3,但不能整除 2")
    else:
        print  ("你输入的数字不能整除 2 和 3")

将以上程序保存到 test_if.py 文件中,执行后输出结果为:

$ python3 test.py
输入一个数字:6
你输入的数字可以整除 2 和 3

4、三元表达式

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

其他语言中,例如java的三元表达式是这样:

int a = 1;
String b = "";
b =  a > 1? "执行表达式1":"执行表达式2"
System.out.println(b)

在python中只有类似的替代办法,如果a>b的结果为真,h=“变量1”,如果为假,h=“变量2”:

a = 1
b = 2
h = ""

h = "变量1" if a>b else "变量2"

print(h)

也可以用简单的公式,如下:

a = 1
b = 2
h = ""

h = a-b if a>b else a+b

print(h)

5、循环语句

Python中的循环语句有 for 和 while。

5.1 while循环

Python中while语句的一般形式:

while 判断条件:
   语句

同样需要注意冒号和缩进。另外,在 Python 中没有 do…while 循环。以下实例使用了 while 来计算 1 到 100 的总和:

>>> n=100;
>>> sum=0
>>> counter=1
>>> while  counter<=n:
...     sum=sum+counter
...     counter=counter+1
>>> print(sum)
5050

5.1.1 while循环使用else语句

在 while … else 在条件语句为 false 时执行 else 的语句块:

>>> counter=0
>>> while  counter<5:
...     print(counter,"小于5")
...     counter=counter+1
... else:
...     print(counter,"小于或等于5")
...
0 小于5
1 小于5
2 小于5
3 小于5
4 小于5
5 小于或等于5

5.1.2 简单语句组

类似if语句的语法,如果while循环体中只有一条语句,可以将该语句与while写在同一行中, 如下所示:

 flag = 1
 while (flag): print ('啦啦啦')
 print ("Good bye!")
 啦啦啦
 啦啦啦
 啦啦啦
 ...

5.2 for循环

  • Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。for循环的一般格式如下:

for < variable > in < sequence >:
  < statements >
else:
  < statements >

实例如下:

>>> languages=["c","c++","matlab","python"]
>>> for x in languages:
...     print(x)
...
c
c++
matlab
python
  • 以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体:
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    if site == "Runoob":
        print("啦啦啦啦!")
        break
    print("循环数据 " + site)
else:
    print("没有循环数据!")
print("完成循环!")
循环数据 Baidu
循环数据 Google
啦啦啦啦!
完成循环!

5.3 range 函数

  • 如果需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
  • 也可以使用range指定区间的值:
>>> for i in range(1,10):
...     print(i)
...
1
2
3
4
5
6
7
8
9
  • 也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做’步长’):
>>> for i in range(0,10,2):
...     print(i)
...
0
2
4
6
8
>>> for i in range(100,0,-10):
...     print(i)
...
100
90
80
70
60
50
40
30
20
10
  • 可以结合range()和len()函数以遍历一个序列的索引,如下所示:
>>> a=["c","c++","matlab","python"]
>>> for i in range(len(a)):
...     print(i,a[i])
...
0 c
1 c++
2 matlab
3 python
  • 还可以使用range()函数来创建一个列表:
>>>list(range(5))
[0, 1, 2, 3, 4]
>>>

5.4 break 和 continue语句及循环中的else子句

  • break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。 实例如下:
>>> for letter in 'python':  #第一个实例
...     if  letter=='o':
...         break
...     print('当前字母为:',letter)
...
当前字母为: p
当前字母为: y
当前字母为: t
当前字母为: h
>>> var=10  #第二个实例
>>> while var>0:
...     print('当前变量值为:',var)
...     var=var-1
...     if  var==5:
...         break
...
当前变量值为: 10
当前变量值为: 9
当前变量值为: 8
当前变量值为: 7
当前变量值为: 6
  • continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
>>> for letter in 'python':    #实例1
...     if letter=='o':    #字母为o时跳过输出
...         continue
...     print('当前字母:',letter)
...
当前字母: p
当前字母: y
当前字母: t
当前字母: h
当前字母: n
>>> var=10      #实例2
>>> while  var>0:
...     var=var-1
...     if  var==5:    #字母为o时跳过输出
...         continue
...     print('当前变量值:',var)
...
当前变量值: 9
当前变量值: 8
当前变量值: 7
当前变量值: 6
当前变量值: 4
当前变量值: 3
当前变量值: 2
当前变量值: 1
当前变量值: 0

参考文件:
菜鸟教程+https://www.cnblogs.com/mywood/p/7416893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值