python 字典

2017年1月15日 Python学习笔记 No comments

python字典的功能:將相关信息关联起来。

1>在python中,字典是一系列键-值对,每个键都与一个值相关联。

2>与键相关联的值可以是数字,字符串,列表,字典等任何python对象

3>可以使用键来访问相关联的值

4>字典格式,字典用放在花括号{}中的一系列键值对表示。

5>注意:重点->字典中的key一定唯一!!!

my_dict = {'key1':'value1', 'key2':'value2', 'key3':'value3'}

访问字典中的值:

依次指定字典名和放在方括号内的键,即可获取与键相关联的值

my_dict = {'color':'green', 'number':100}
my_number = my_dict['number']
print('My number is ' + str(my_number) + '.')

输出:

My number is 100.

向字典中添加键-值对:

字典是一种动态结构可随时在其中添加键值对。

添加键值对的方法:依次指定字典名,用方括号括起的键和相关联的值。

注意点:键-值对的排列顺序与添加顺序不同,字典中的键-值对顺序不是我们能够预料的。

my_dict = {}   #空字典情况添加键值对
my_dict['key1'] = 'value1'
my_dict['key2'] = 'value2'
print(my_dict)

my_dict['key3'] = 'value3'   #非空字典情况添加键值对
my_dict['key4'] = 'value4'
print(my_dict)

输出:

{'key2':'value2', 'key1':'value1'}
{'key4':'value4', 'key2':'value2', 'key3':'value3', 'key1':'value1'}

修改字典中的值:

修改字典中的值的方法:依次指定字典名,用方括号括起的键和相关联的新值。

my_test = {'key1':'value1'}
print(my_test)
my_test['key1'] = 'v2'
print(my_test)

输出:

{'key1':'value1'}
{'key1':'v2'}

删除键-值对:

可以使用del语句彻底删除字典中不需要的键值对

my_test = {'key1':'value1', 'k2':'v2'}
del my_test['key1']
print(my_test)

输出:

{'k2':'v2'}

由类似对象组成字典:

即假设每一个键值对,代表的是一个对象,即key是对象名,value是对象的内容。

languages = {
    'duyanhan':'c',
    'zhang':'java',
    'eril':'python'
    }
print("duyanhan's favorite language is " + languages['duyanhan'].title()+".")

输出:

duyanhan's favorite language is C.

遍历字典:

 

python 判断

2017年1月14日 Python学习笔记 2 comments

Python中的真假用True和False来表示,注意:true和false是不被Python识别的!

每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试,条件测试的别名又叫布尔表达式。

1.检查是否相等,使用 ==

2.检查是否相等,区分大小写

3.检查是否不相等,使用 !=

4.检查多个条件:

<1>.使用and检查多个条件:必须每个条件都是True,才整体为True

<2>.使用or检查多个条件:只要有一个条件为True,整体即为True

5.检查特定值是否包含在列表中,使用 in

6.检查特定值是否不包含在列表中,使用 not in

#检查是否相等
name = 'car'
if name == 'car':
	print(name == 'car')

name = 'bike'
print(name == 'car')


#检查是否相等时区分大小写
name = 'car'
print(name == 'Car')



#检查是否不相等
name = 'car'
if name != 'bike':
	print(name != 'bike')

name = 'bike'
print(name !='bike' )


#使用and检查多个条件
name = 'car'
if name == 'car' and name != 'bike':
	print(name == 'car' and name != 'bike')


#使用or检查多个条件
name = 'car'
if name == 'car' or name != 'car':
	print(name == 'car')
	print(name != 'car')


#检查特定值是否包含在列表中
friends = ['duyanhan', 'liucaoheng', 'baoshihua']
if 'duyanhan' in friends:
	print('duyanhan' in friends)
	
#检查特定值是否不包含在列表中
friends = ['duyanhan', 'liucaoheng', 'baoshihua']
if 'huangzetian' not in friends:
	print('huangzetian' not in friends)
	
#其它:
name = ['jiamei', 'beibei', 'wangjingjing']
for n in name:
	if n == 'beibei':
		print(n.title())
	else:
		print(n.upper())

输出:

True
False
False
True
False
True
True
False
True
True
JIAMEI
Beibei
WANGJINGJING

判断语句结构:

1.if 语句

if conditional_test:
	do something

2.if-else 语句

if conditional_test:
	do something
else:
	do something

3.if-elif-else 语句

if conditional_test:
	do something
elif conditional_test:
	do something
else:
	do something

4.使用多个elif代码块

if conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
else:
	do something

5.省略else代码块

if conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something
elif conditional_test:
	do something

注意:if-elif-else,if-elif,if-else,这些都仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就会跳过余下的测试。这种行为很好,效率很高,让你能够测试一个特定的条件!!!

 

然而,有时候必须检查需要关心的所有条件:就应该使用一系列不包含elif和else代码块的简单if语句。

格式:

if conditional_test1:
	do something1
if conditional_test2:
	do something2
if conditional_test3:
	do something3
if conditional_test4:
	do something4
if conditional_test5:
	do something5

我的总结:

如果判断的多种情况中只有一种情况为True,则可以使用if-else,if-elif-else,if-elif这三种。

如果判断的多种情况中可能有多种情况为True,则应该使用多条并列的简单if语句。


使用if语句处理列表:

1>在循环中检查特殊元素:

req_ask = ['wo', 'ni', 'ta']
for ask in req_ask:
	if ask == 'wo':
		print(ask.title() + " is good.")
	else:
		print(ask.title() + " is not good.")

输出:

Wo is good.
Ni is not good.
Ta is not good.

2>确定列表不是空的:

my_list = []
if my_list:#如果列表不为空,打印所有元素
	for element in my_list:
		print(element)
else:
	print('The list is empty, do you want to add element?')

输出:

The list is empty, do you want to add element?

设置if语句的格式:

PEP8提供的唯一建议是,在诸如==, >= 和 <=等比较运算符两边各添加一个空格!!!

python 书写规范

2017年1月14日 Python学习笔记 No comments

缩进:

建议每级缩进都使用四个空格,这既可以提高可读性,又留下了足够的多级缩进空间


行长:

一行不要超过79个字符


空行:

將程序的不同部分分开,可使用空行。使用空行来组织程序文件。


参考指南:

PEP8格式:http://python.org/dev/peps/pep-0008

python 元组

2017年1月14日 Python学习笔记 No comments

元组是一种特殊的列表,普通的列表中的元素都是可以修改的,而元组特殊在它里面的元素都是不可修改的。

元组:看起来很像列表,但它使用的是圆括号而不是列表的方括号来包围多个元素。

功能:元组常用于创建一系列不可修改的元素。

friends = ('duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue')
for friend in friends:
	print(friend)

输出:

duyanhan
xiexiao
caicai
songcaili
zhouhui
wangyueyue

注意:元组可以看成是一种特殊的列表,所以使用元组的语法和使用列表的语法相同,但是元组中的元素不可赋值(即修改),例如:friends[0] = ‘haha’就是错误的用法。


修改元组变量:

元组中的各个元素是不能改变的,但是存储元组的元组变量是可以修改的!!!!

num_set = (20, 400)
print(num_set)
num_set = (50, 800)
print(num_set)

输出:

(20, 400)
(50, 800)

发现并没有报错, 由此可以证明,元组变量是可以修改的!!

 

相比于列表, 元组是更简单的数据结构。

如果需要存储的一组值在程序的整个生命周期内都不变,可以使用元组。

python 切片

2017年1月14日 Python学习笔记 No comments

列表的部分元素–python称之为切片


切片的获取:

切片格式为:

切片名[n : m],这样获取的切片中元素为从索引为n的元素开始一直到索引为m-1的元素

切片名[ : m],这样获取的切片中元素为从列表开头第一个元素开始一直到索引为m-1的元素

切片名[n : ],这样获取的切片中元素为从索引为n的元素开始一直到列表末尾最后一个元素

切片名[ : ],这样获取的切片中元素为整个列表中所有的元素

注意:索引可以是负数,即从后往前索引也还是可以的

friends = ['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
print(friends[0:3])
print('\n')

print(friends[1:4])
print('\n')

print(friends[:4])
print('\n')

print(friends[2:])
print('\n')

print(friends[-3:])

输出:

['duyanhan', 'xiexiao', 'caicai']

['xiexiao', 'caicai', 'songcaili']

['duyanhan', 'xiexiao', 'caicai', 'songcaili']

['caicai', 'songcaili', 'zhouhui', 'wangyueyue']

['songcaili', 'zhouhui', 'wangyueyue']

遍历切片:

遍历切片的操作可直接使用for循环

friends = ['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
for friend in friends[:3]:
	print(friend)
#打印前三个元素

输出:

duyanhan
xiexiao
caicai

复制列表(要区别关联列表)(重点!!)

1.利用切片复制整个列表,得到的新列表和旧列表各自之间发生改变不会相互影响。

friends = ['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
new_friends = friends[:]

print(friends)
print(new_friends)

#改变friends列表
friends.append('wo')
#改变new_friends列表
new_friends.append('ni')

print(friends)
print(new_friends)

#复制原理:
#在不指定任何索引的情况下从列表friends中提取一个切片,从而创建了这个列表的副本,
#再將这个副本存储到变量new_friends中

输出:

['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue', 'wo']
['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue', 'ni']

我的理解:之所以这个副本存储到new_friends中,使得new_friends是一个新的列表,是因为,切片这个功能返回的就是一个列表,即可以说切片是一个列表的一个部分,而这个部分同时也是一个新的列表!!!

2.直接用一个列表名赋值另一个新的列表名,会导致两个列表关联,即两个列表中的任何改变都会影响到另一个列表,也就相当于两个列表名代表的是同一个列表。

friends = ['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
new_friends = friends

print(friends)
print(new_friends)

#改变friends列表
friends.append('wo')
#改变new_friends列表
new_friends.append('ni')

print(friends)
print(new_friends)

#关联原理:
#直接用一个列表名赋值另一个新的列表名,会导致两个列表关联,
#即两个列表中的任何改变都会影响到另一个列表
#也就相当于两个列表名代表的是同一个列表

输出:

['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue']
['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue', 'wo', 'ni']
['duyanhan', 'xiexiao', 'caicai', 'songcaili', 'zhouhui', 'wangyueyue', 'wo', 'ni']

 

 

 

python 数值列表

2017年1月13日 Python学习笔记 No comments

创建数值列表:

1.range()函数功能:生成一个指定范围的数值集合。

2.range()函数格式:range(m, n), 生成的数字集合为[m, n-1]

如果为range(m, n, k)则生成的数字集合不同于上面,k代表间隔

3.list()函数功能:可以將一个数值集合转换成一个数值列表。

#使用range()函数生成一系列数字
for value in range(1, 5):
	print(value)

print('\n')

#利用range()函数动态创建列表
squares = []
for value in range(1, 11):
	square = value**2
	squares.append(square)
print(squares)

输出:

1
2
3
4

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 

#使用list()將range()生成的数值集合转换成数值列表
numbers = list(range(1, 6))
print(numbers)

输出:

[1, 2, 3, 4, 5]
#range(n, m, k)中第三个参数k代表两数值之间的间隔
my_list = list(range(1, 10, 2))
print(my_list)

输出:

[1, 3, 5, 7, 9]

 

统计数值列表:

1.min()函数,取列表中最小数值

2.max()函数,取列表中最大数值

3.sum()函数,计算列表中所有数总和

这三个函数括号中的参数都是列表!

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(digits))
print(max(digits))
print(sum(digits))

输出:

0
9
45

列表解析:(重点)

使用列表解析创建数值列表:for循环和创建新元素的代码合并成一行,并自动添加新元素

列表解析格式:

列表名 = [表达式 for 临时变量 in 数值集合]

解释:for循环的作用是给表达式提供值,这个值由表达值计算后,就是一个新的元素,并自动添加到列表中。

squares = [value**2 for value in range(1, 11)]
print(squares)

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 

python 循环

2017年1月12日 Python学习笔记 No comments

beautiful_girl = ['ouyangjiamei', 'beibei', 'wangjingjing']
for girl in beautiful_girl:
	print(girl.title() + ", she is a great girl!")
	print("I can't forget " + girl.title() + "!\n")

print("Thank you!")

输出:

Ouyangjiamei, she is a great girl!
I can't forget Ouyangjiamei!

Beibei, she is a great girl!
I can't forget Beibei!

Wangjingjing, she is a great girl!
I can't forget Wangjingjing!

Thank you!

注意点:

python中for循环格式: 

for   临时变量   in  待遍历集合:
        操作语句1
        操作语句2
        ...
        操作语句N

python 列表

2017年1月12日 Python学习笔记 No comments

在Python中,用方括号([ ])来表示列表,并用逗号来分隔其中的元素。列表中的元素之间可以没有任何关系。

example = ['duyanhan', 'student', 23, 'boy']
print(example)

输出:

['duyanhan', 'student', 23, 'boy']       #打印列表时,会打印列表的内部表示,并且包括方括号

利用索引访问列表元素:

在Python中,第一个列表元素的索引为0,然后是1,依次类推。倒数第一个列表元素的索引是-1,倒数第二个列表元素的索引是-2,依次类推。

example = ['duyanhan', 'student', 23, 'boy']
print(example[0])
print(example[3])
print(example[-1])
print(example[-2])

message = "I am a " + example[1] + '!'
print(message)

输出:

duyanhan
boy
boy
23
I am a student!

修改列表元素:

就是在已知元素索引的情况下,以普通的赋值形式来修改。

example = ['duyanhan', 'student', 23, 'boy']
example[3] = 'BOY'
print(example)

输出:

['duyanhan', 'student', 23, 'BOY']

添加列表元素:

1.在末尾追加元素:使用append()方法

2.在列表的任何位置插入新元素:使用insert()方法

example = ['duyanhan', 'student', 23, 'boy']
print(example)

example.append('hahaha')  #在列表末尾添加元素
print(example)

example.insert(1, 'Superman')  #在索引1位置插入新元素,后面的元素依次向右挪一位
print(example)

输出:

['duyanhan', 'student', 23, 'boy']
['duyanhan', 'student', 23, 'boy', 'hahaha']
['duyanhan', 'Superman', 'student', 23, 'boy', 'hahaha']

还有一种常用的写法,通过动态添加元素,来创建列表:

example = []

example.append('duyanhan')
example.append('student')
example.append(23)

print(example)

输出:

['duyanhan', 'student', 23]

删除列表元素:

1.在已知元素索引的情况下,使用del语句删除

2.使用pop()方法删除删除的是列表末尾的元素

3.在已知元素索引的情况下,使用pop()方法指定索引删除,删除的是索引对应的元素

4.在已知元素值的情况下,使用remove()方法删除元素

比较:

1.del语句和remove()方法不会返回删除的值pop()则在删除指定的列表元素后返回被删除的元素,即可以获取被删除的元素,并加以使用

2.如果有多个相同值元素在列表中remove()只删除第一个指定的值

example = ['wrong', 'duyanhan', 'some', 'student', 23, 'boy', 'hahaha']

#使用del语句删除列表元素
del example[0]
print(example)

#使用pop()方法删除列表元素
#1.末尾删除
message = example.pop()
print(message)
#2.指定索引删除
message = example.pop(1)
print(message)

#使用remove()方法删除列表元素
example.remove('student')
print(example)

输出:

['duyanhan', 'some', 'student', 23, 'boy', 'hahaha']
hahaha
some
['duyanhan', 23, 'boy']

列表排序:

1.使用sort()方法对列表进行永久性排序(字典序排序)

2.使用sorted()方法对列表进行临时排序(字典序排序)

3.使用reverse()方法永久性反转列表元素顺序

example = ['wrong', 'duyanhan', 'some', 'student', 'boy', 'hahaha']

#使用sort()方法永久性字典序排序
example.sort()
print(example)

#还原
example = ['wrong', 'duyanhan', 'some', 'student', 'boy', 'hahaha']

#使用sorted()方法临时性字典序排序
print(sorted(example))  #注意这里sorted()方法的使用格式
print(example)

#使用reverse()方法永久性反转列表元素顺序
example.reverse()
print(example)

输出:

['boy', 'duyanhan', 'hahaha', 'some', 'student', 'wrong']
['boy', 'duyanhan', 'hahaha', 'some', 'student', 'wrong']
['wrong', 'duyanhan', 'some', 'student', 'boy', 'hahaha']
['hahaha', 'boy', 'student', 'some', 'duyanhan', 'wrong']

利用len()方法确定列表长度:

example = ['wrong', 'duyanhan', 'some', 'student', 'boy', 'hahaha']

#注意len()方法使用格式
print(len(example))

输出:

6

 

python 注释

2017年1月12日 Python学习笔记 No comments

在python中,注释使用井号(#)标识。井号后面的内容都会被Python解释器忽略。

示例:

#我向大家问好
print("Hello, I am Duyanhan!")

 

python 数字

2017年1月12日 Python学习笔记 No comments

python中整数基本的加减乘除以及乘方运算:

print(2+3)
print(3-1)
print(3*5)

print(3/2)

print(3**2)
print(2**3)
print(10**6)

输出:

5
2
15
1.5
9
8
1000000

注意:除法(/),乘方(**)需要多加注意!

在python2中,两个整数的除法会直接去掉小数部分,而python3中,会保留小数部分。要多加注意!!!


使用str()函数避免类型错误

错例:下面这种错误的写法在java中可行,但在python中不可行!

age = 23
message = "Happy "+ age + "rd Birthday!"
print(message)

正确写法:

age = 23
message = "Happy "+ str(age) + "rd Birthday!"
print(message)

正确输出:

Happy 23rd Birthday!