发现了一个宝藏网站:Learn X in Y Minutes,由这个学习了Python,推荐给大家,下面是我跟着敲得代码及翻译还有自己加的一些注释。原网址:https://learnxinyminutes.com/docs/python3/
我用的是jupyter notebook写的,将这个直接保存成了.py文件复制的,输出结果好像没有复制上来。第一次比较生疏,望见谅,有问题可留言。
注:#:后面是注释
ln[x]:代表cell,即一个jupyter notebook的一个cell。
####################################################
## 2. 变量和集合
####################################################
# In[46]:
# 输出用print()
print("I'm Python. Nice to meet you!")
print("I'm Python. Nice to meet you!")
# In[47]:
# print函数默认在结束时插入换行符
# 可以通过end参数改变
print("Hello, World", end="!")
print("Hello, World", end="!")
# In[50]:
# 在console命令行中获得输入,可以使用input,参数会作为提示进行输出
# Note: 在python早期版本中,input函数名称为raw_input
input_string_var =input("Enter some data: ")
# In[51]:
input_string_var
# In[53]:
# python中没有变量声明,只有赋值
# 变量的命名惯例为小写字母,多个单词通过_连接: lower_case_with_underscores
some_var =5
some_var# => 5
# In[54]:
# 访问一个没有赋值过的变量名,会跑出异常
# 直接看console中的输出来了解异常原因
some_unknown_var
# In[56]:
# if 可以用来作为一种表达式
# a if b else c 意为 b为True取a,b为False取c
hoo ="yahoo!" if 2 >3 else 2 # => "yahoo!"
hoo
# In[57]:
# 生成一个空的list
li = []
# 也可以跳过声明直接赋值
other_li = [4, 5, 6]
# In[58]:
# list有append函数,可以在末尾添加item
li.append(1)# li is now [1]
li.append(2)# li is now [1, 2]
li.append(4)# li is now [1, 2, 4]
li.append(3)# li is now [1, 2, 4, 3]
# pop函数可以删除list中的最后一个元素
li.pop()# => 3 and li is now [1, 2, 4]
# 还是把3放回去吧
li.append(3)# li is now [1, 2, 4, 3] again.
# In[59]:
# 通过item的index可以访问对应位置item的值,index从0开始
li[0]# => 1
# 可以通过负数来倒着数,-1代表最后一个
li[-1]# => 3
# In[60]:
# 如果index访问的item超出list长度,会抛出异常
li[4]# IndexError
# In[61]:
# li[start:end:step],你可以通过分片来对list进行部分访问
# li[a:b],意为取出li中index为a的item至index为b-1的item(含头不含尾)
li[1:3]# => [2, 4]
# 省略头/尾的参数,则代表 从头开始/到尾结束
li[:3]# => [1, 2, 4]
li[2:]# => [4, 3]
# li[a:b:c]意为从li中index为a开始,index每次+c取item,直至所取item的index>=b
li[::2]# =>[1, 4]
# li[a:b:c]c为负值的时候则倒着取
li[::-1]# => [3, 4, 2, 1]
# In[62]:
# 如果要对list进行deep copy(复制object所有内容但不是同一对象)
# 使用如下语句
li2 = li[:]
li2 == li# => True
li2is li# => False
# In[63]:
# del[index]方法可以删除list中index位置的元素
del li[2]# li is now [1, 2, 3]
# In[64]:
# remove(value)方法会删除list中第一个值等于value的item
li.remove(2)
# In[65]:
# remove方法调用时,如果没有对应value的item,则会报错
li.remove(100)
# In[66]:
# insert(index, value)可以在list中的index处插入值为value的item
li.insert(1, 2)# li is now [1, 2, 3] again
li
# In[88]:
# index(value)方法可以在list中进行查询,返回值为value的item的index
li.index(2)# => 1
# 没有的话就报错
li.index(4)# Raises a ValueError as 4 is not in the list
# In[95]:
# 可以用+直接连接两个list
# 这里没有进行赋值,所以li和other_li都没变
li + other_li# => [1, 2, 3, 4, 5, 6]
#有重复item的话,该item会重复出现
#li.pop()
li.append(4)
li + other_li# => [1, 2, 3, 4, 4, 5, 6]
# In[96]:
# 如果调用list内部方法,extend进行连接,则调用方法的list会默认被赋值
li.extend(other_li)
li
# In[97]:
# 通过in关键字,判断value是否存在在list中
1 in li# => True
# In[98]:
# len方法可以返回list长度
len(li)
# In[99]:
#################################Tuple################################
# Tuple和list相似,但是不可变
#Tuple是括号
tup = (1, 2, 3)
tup[0]# => 1
tup[0] =3 # 赋值就报错
# In[ ]:
# 如果长度为1的tuple,需要在唯一的item后添加逗号','来声明自己是tuple
# 否则python会把它的类型解析成唯一item的类型
type((1))# =>
type((1,))# =>
type(())# =>
# In[100]:
# 大部分list操作都可以应用到tuple上
len(tup)# => 3
tup + (4, 5, 6)# => (1, 2, 3, 4, 5, 6)
tup[:2]# => (1, 2)
2 in tup# => True
# In[101]:
# 可以对tuple进行解压,分别赋值给变量
a, b, c = (1, 2, 3)# a = 1, b = 2 and c = 3
# 还可以进行扩展拆包
a, *b, c = (1, 2, 3, 4)# a = 1, b = [2, 3] and c = 4
# 如果你不写括号,tuple也会自动生成
d, e, f =4, 5, 6
# 交换两个变量的值
e, d = d, e# d is now 5 and e is now 4
# In[102]:
####################################Dictionary#######################################
#Dictionary是大括号
# Dictionary存储的是key到value的映射
# 生成空的dict
empty_dict = {}
# 也可以直接赋值
filled_dict = {"one":1, "two":2, "three":3}
# In[103]:
# 可以通过方括号dict[key]查询对应key的值
filled_dict['one']
# In[111]:
# 取一个字典中不存在的key的value会报错
filled_dict["four"]# KeyError
# In[104]:
# dictionary中的key必须是不可变类型量(immutable type)
# Immutable types 包括 ints, floats, strings, tuples.
# value是啥都行
invalid_dict = {[1,2,3]:"123"}# => TypeError: unhashable type: 'list'
# In[105]:
# 通过dictionary中的keys()方法,可以迭代取出字典中的key
# 通过list()可以将该方法的结果转化为list
# python3.7之前的版本,不保证key的取出顺序
# python3.7之后,key会按照在字典中的顺序取出
list(filled_dict.keys())# => ["three", "two", "one"] in Python <3.7
list(filled_dict.keys())# => ["one", "two", "three"] in Python 3.7+
# In[115]:
# 同理,通过values方法可以取出values
list(filled_dict.values())# => [3, 2, 1] in Python <3.7
list(filled_dict.values())# => [1, 2, 3] in Python 3.7+
filled_dict.values()# => dict_values([3, 2, 1])
# In[107]:
# 通过in保留字,来检查dictionary中是否包含该key(而非value)
"one" in filled_dict# => True
1 in filled_dict# => False
# In[112]:
# 通过get方法,可以避免报错,如果没有,返回None
filled_dict.get("one")# => 1
filled_dict.get("four")# => None
# 也可以在get方法中增加第二个参数,来代替查询不到时,默认返回的None
filled_dict.get("one", 4)# => 1
filled_dict.get("four", 4)# => 4
# In[116]:
# setdefault方法可以给不存在的key赋值
# 如果该键值对(key:value)已存在,则不生效
filled_dict.setdefault("five", 5)# filled_dict["five"] is set to 5
filled_dict.setdefault("five", 6)# filled_dict["five"] is still 5
# In[117]:
# 在dictionary中增加键值对,可以使用update方法
filled_dict.update({"four":4})# => {"one": 1, "two": 2, "three": 3, "four": 4}
# 直接对不存在的key 进行赋值,也可以实现键值对的增加
filled_dict["four"] =4 # another way to add to dict
# In[118]:
# 通过del方法可以删除对应key的键值对
del filled_dict["one"]# Removes the key "one" from filled dict
# In[121]:
# 在python3.5之后,也可以通过**{}来完成补充扩展操作
{'a':1, **{'b':2}}# => {'a': 1, 'b': 2}
{'a':1, **{'a':2}}# => {'a': 2}
{'a':1, 'b':2}
# In[122]:
#############################################set######################################
#set也用大括号
# set也是通过{}进行包装的,定义空set时,需要调用set方法
empty_set =set()
# set中的值不能重复(重复值会自动合并)
some_set = {1, 1, 2, 2, 3, 4}# some_set is now {1, 2, 3, 4}
# In[123]:
# 和dictionary中的key相似,set的item必须是不可变类型量(也就是list不行)
# set可以看作是一个只有key的dictionary
invalid_set = {[1], 1}# => Raises a TypeError: unhashable type: 'list'
# In[124]:
# 通过add方法向set中添加item
filled_set = some_set
filled_set.add(5)# filled_set is now {1, 2, 3, 4, 5}
# 重复添加无效
filled_set.add(5)# it remains as before {1, 2, 3, 4, 5}
# In[125]:
# 可以通过&运算,来取交集
other_set = {3, 4, 5, 6}
filled_set & other_set# => {3, 4, 5}
# In[126]:
# 可以通过|取并集
filled_set | other_set# => {1, 2, 3, 4, 5, 6}
# In[127]:
# 也可以通过-做集合减法(第一个有第二个没有的)
{1, 2, 3, 4} - {2, 3, 5}# => {1, 4}
# In[128]:
# 可以通过^做对称减法(相当于并集减交集)
{1, 2, 3, 4} ^ {2, 3, 5}# => {1, 4, 5}
# In[129]:
# 通过大于小于号检查包含关系
{1, 2} >= {1, 2, 3}# => False
{1, 2} <= {1, 2, 3}# => True
# In[1]:
# 通过in检查set中是否存在该item
2 in filled_set# => True
10 in filled_set# => False