一、基础学习
1.print
2.循环
while循环
a = range(10)
while a:
print(a[-1])
a = a[:len(a)-1]
for循环
for i in range(1, 10):
print(i) #表达将会返回 1-9 所有整数,但不包含 10
range(start, stop, step) #range()的用法
for i in range(0,13, 5):
print(i)
3.list
>>> L = [12, 'China', 19.998]
>>> L.append('Jack') # 在list末尾添加
>>> print L
[12, 'China', 19.998, 'Jack']
>>> L.insert(1, 3.14) # 在指定位置添加
>>> print L
[12, 3.14, 'China', 19.998, 'Jack']
>>> L.pop() # 删除list尾部数值
'Jack'
>>> print L
[12, 3.14, 'China', 19.998]
>>> L.pop(0) # 删除list指定数值
12
>>> print L
[3.14, 'China', 19.998]
>>> L[1] = 'America' # 复制替换
>>> print L
[3.14, 'America', 19.998]
打印列表中的某个值的索引(index):
a = [1,2,3,4,1,1,-1]
print(a.index(2)) # 显示列表a中第一次出现的值为2的项的索引
# 1
统计列表中某值出现的次数:
a = [4,1,2,3,4,1,1,-1]
print(a.count(-1)
创建二维列表
一个一维的List是线性的List,多维List是一个平面的List:
a = [1,2,3,4,5] # 一行五列
multi_dim_a = [[1,2,3],
[2,3,4],
[3,4,5]] # 三行三列
索引
在上面定义的List中进行搜索:
print(a[1])
# 2
print(multi_dim_a[0][1])
# 2
用行数和列数来定位list中的值。这里用的是二维的列表,但可以有更多的维度。
4.tuple
Tuple可以看做是一种“不变”的List,访问也是通过下标,用小括号()表示:
>>> t = (3.14, 'China', 'Jason')
>>> print t
(3.14, 'China', 'Jason')
>>>t = (3.14,) #建立单元素tuple
那么tuple这个类型到底有什么用处呢?要知道如果你希望一个函数返回多个返回值,其实只要返回一个tuple就可以了,因为tuple里面的含有多个值,而且是不可变的(就像是java里面的final)。当然,tuple也是可变的,比如:
>>> t = (3.14, 'China', 'Jason', ['A', 'B'])
>>> print t
(3.14, 'China', 'Jason', ['A', 'B'])
>>> L = t[3]
>>> L[0] = 122
>>> L[1] = 233
>>> print t
(3.14, 'China', 'Jason', [122, 233])
这是因为Tuple所谓的不可变指的是指向的位置不可变,因为本例子中第四个元素并不是基本类型,而是一个List类型,所以t指向的该List的位置是不变的,但是List本身的内容是可以变化的,因为List本身在内存中的分配并不是连续的。
5.dictionary 字典的元素是不重复的
>>> d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59,
'Paul': 75
}
>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Bart': 59}
可以直接通过键值对方式添加dict中的元素:
>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Bart': 59}
>>> d['Jone'] = 99
>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Jone': 99, 'Bart': 59}
List和Tuple用下标来访问内容,而Dict用Key来访问: (字符串、整型、浮点型和元组tuple都可以作为dict的key)
>>> print d['Adam']
95
所以访问之前最好先查询下key是否存在:
>>> if 'Adam' in d : print 'exist key'
exist key
或者直接用保险的get方法:
>>> print d.get('Adam')
95
>>> print d.get('Jason')
None
至于遍历一个dict,实际上是在遍历它的所有的Key的集合,然后用这个Key来获得对应的Value:
>>> for key in d : print key, ':', d.get(key)
Lisa : 85
Paul : 75
Adam : 95
Bart : 59
Dict的合并,如何将两个Dict合并为一个,可以用dict函数:
>>> dMerge2 = dict(d1, **d2)
>>> print dMerge2
{'mike': 12, 'jack': 19, 'jone': 22, 'ivy': 17}
等同于:
>>> dMerge3 = dict(d1)
>>> dMerge3.update(d2)
>>> print dMerge
{'mike': 12, 'jack': 19, 'jone': 22, 'ivy': 17}
字典存储类型
以上的例子可以对列表中的元素进行增减。在打印出整个列表时,可以发现各个元素并没有按规律打印出来,进一步验证了字典是一个无序的容器。
def func():
return 0
d4 = {'apple':[1,2,3], 'pear':{1:3, 3:'a'}, 'orange':func}
print(d4['pear'][3]) # a
字典还可以以更多样的形式出现,例如字典的元素可以是一个List,或者再是一个列表,再或者是一个function。索引需要的项目时,只需要正确指定对应的key
就可以了。
6.set
set就像是把Dict中的key抽出来了一样,类似于一个List,但是内容又不能重复,通过调用set()方法创建:
>>> s = set(['A', 'B', 'C'])
就像dict是无序的一样,set也是无序的,也不能包含重复的元素。
对于访问一个set的意义就仅仅在于查看某个元素是否在这个集合里面:
>>> print 'A' in s
True
>>> print 'D' in s
False
大小写是敏感的。
也通过for来遍历:
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
#tuple
for x in s:
print x[0],':',x[1]
>>>
Lisa : 85
Adam : 95
Bart : 59
通过add和remove来添加、删除元素(保持不重复),添加元素时,用set的add()方法:
>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])
如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:
>>> s = set([1, 2, 3])
>>> s.add(3)
>>> print s
set([1, 2, 3])
删除set中的元素时,用set的remove()方法:
>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])
如果删除的元素不存在set中,remove()会报错:
>>> s = set([1, 2, 3])
>>> s.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4
所以如果我们要判断一个元素是否在一些不同的条件内符合,用set是最好的选择,下面例子:
months = set(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',])
x1 = 'Feb'
x2 = 'Sun'
if x1 in months:
print 'x1: ok'
else:
print 'x1: error'
if x2 in months:
print 'x2: ok'
else:
print 'x2: error'
>>>
x1: ok
x2: error
set 基本
Set 最主要的功能就是寻找一个句子或者一个 list 当中不同的元素.
char_list = ['a', 'b', 'c', 'c', 'd', 'd', 'd']
sentence = 'Welcome Back to This Tutorial'
print(set(char_list))
# {'b', 'd', 'a', 'c'}
print(set(sentence))
# {'l', 'm', 'a', 'c', 't', 'r', 's', ' ', 'o', 'W', 'T', 'B', 'i', 'e', 'u', 'h', 'k'}
print(set(char_list+ list(sentence)))
# {'l', 'm', 'a', 'c', 't', 'r', 's', ' ', 'd', 'o', 'W', 'T', 'B', 'i', 'e', 'k', 'h', 'u', 'b'}
添加元素
定义好一个 set 之后我们还可以对其添加需要的元素, 使用 add
就能添加某个元素. 但是不是每一个东西都能添加, 比如一个列表.
unique_char = set(char_list)
unique_char.add('x')
# unique_char.add(['y', 'z']) this is wrong
print(unique_char)
# {'x', 'b', 'd', 'c', 'a'}
清除元素或 set
清除一个元素可以用 remove
或者 discard
, 而清除全部可以用 clear
.
unique_char.remove('x')
print(unique_char)
# {'b', 'd', 'c', 'a'}
unique_char.discard('d')
print(unique_char)
# {'b', 'c', 'a'}
unique_char.clear()
print(unique_char)
# set()
筛选操作
我们还能进行一些筛选操作, 比如对比另一个东西, 看看原来的 set 里有没有和他不同的 (difference
). 或者对比另一个东西, 看看 set 里有没有相同的 (intersection
).
unique_char = set(char_list)
print(unique_char.difference({'a', 'e', 'i'}))
# {'b', 'd', 'c'}
print(unique_char.intersection({'a', 'e', 'i'}))
# {'a'}
7.if else
var = var1 if condition else var2
这条命令相当于C语言的三目运算符
x = 4
y = 2
z = 3
if x > 1:
print ('x > 1')
elif x < 1:
print('x < 1')
else:
print('x = 1')
print('finish')
8.def() 可变参数
顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个。当然可以将这些 参数封装成一个 list
或者 tuple
传入,但不够 pythonic
。使用可变参数可以很好解决该问题,注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。
def report(name, *grades):
total_grade = 0
for grade in grades:
total_grade += grade
print(name, 'total grade is ', total_grade)
定义了一个函数,传入一个参数为 name
, 后面的参数 *grades
使用了 *
修饰,表明该参数是一个可变参数,这是一个可迭代的对象。该函数输入姓名和各科的成绩,输出姓名和总共成绩。所以可以这样调用函数 report('Mike', 8, 9)
,输出的结果为 Mike total grade is 17
, 也可以这样调用 report('Mike', 8, 9, 10)
,输出的结果为 Mike total grade is 27
def()关键字参数
关键字参数可以传入0个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict).
def portrait(name, **kw):
print('name is', name)
for k,v in kw.items():
print(k, v)
定义了一个函数,传入一个参数 name
, 和关键字参数 kw
,使用了 **
修饰。表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。如果调用参数 portrait('Mike', age=24, country='China', education='bachelor')
输出:
name is Mike
age 24
country China
education bachelor
通过可变参数和关键字参数,任何函数都可以用 universal_func(*args, **kw)
表达。
zip
zip
函数接受任意多个(包括0个和1个)序列作为参数,合并后返回一个tuple
列表,请看示例:
a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab)) #需要加list来可视化这个功能
"""
[(1, 4), (2, 5), (3, 6)]
"""
zip
中的运算
a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab))
for i,j in zip(a,b):
print(i/2,j*2)
"""
0.5 8
1.0 10
1.5 12
"""
lambda
lambda
定义一个简单的函数,实现简化代码的功能,看代码会更好理解。
fun = lambda x,y : x+y
, 冒号前的x,y
为自变量,冒号后x+y
为具体运算。
fun= lambda x,y:x+y
x=int(input('x=')) #这里要定义int整数,否则会默认为字符串
y=int(input('y='))
print(fun(x,y))
"""
x=6
y=6
12
"""
map
map
是把函数和参数绑定在一起。
>>> def fun(x,y):
return (x+y)
>>> list(map(fun,[1],[2]))
"""
[3]
"""
>>> list(map(fun,[1,2],[3,4]))
"""
[4,6]
"""
9.python中二维矩阵和三维矩阵
https://blog.csdn.net/together_cz/article/details/79593952
https://blog.csdn.net/csj664103736/article/details/72828584
10.
2.class类
class calculator:
name = 'class'
price = 2019
def __init__(self,weight=12,height=3):
self.we = weight
self.he=height
def add(self,x,y):
print(self.we)
result = x + y
print(result)
3.文件的读写
exp1:
text = 'This\nis\nmy\nfirst\nfile'
my_file = open('file.txt','w') # 添加内容使用代码 'a'
my_file.write(text) # 此时已改变file.txt文件的内容
my_file.close()
exp2:
text = 'This\nis\nmy\nfirst\nfile'
my_file = open('file.txt','r')
content = myfile_read()
print(content)