Learn Python in Y Minutes:变量和集合

发现了一个宝藏网站: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

你可能感兴趣的:(Learn Python in Y Minutes:变量和集合)