Python基础语法2 - baibing0716/python GitHub Wiki

一、Python的基础数据类型

1.1 Python的基本数据类型

(1) 可变数据类型: List、Dictionary、Set

(2) 不可变数据类型: Number、String、Tuple

1.2 判断数据的类型

内置的 type() 函数可以用来查询变量所指的对象类型                            #  不会认为子类是父类类型    print(type(a))      返回字符串 <class 'int'>

内置的 isinstance() 函数可以用来查询变量所指的对象类型                      #  会认为子类是父类的类型    isinstance(a, int)  返回True或False

1.3 删除已定义对象

a = 10
b = 20
c = 30

delete a

delete b,c

1.4 Python特殊的运算符

x ** y                    # **表示x的y次幂    2 ** 3 = 8      同理 x **=y     表示 x = x ** y

x // y                    # // 表示取整除     9 // 2 = 4      同理 x //=y     表示 x = x // y

1.5 Python的逻辑运算符

and     条件1 and 条件2

or      条件1 or 条件2

not     not 条件

1.6 成员运算符

in          x in y                  # x在y的序列中 返回True 否则返回False

not in      x not in y              # x不在y的序列中 返回True 否则返回False

1.7 比较两个对象是否一样

is          x is y                  # 类比 id(x) == id(y) 相等则返回True 

is not      x is not y              # 类比 id(x) != id(y) 不相等则返回True 

二、 基本数据类型的介绍

2.1 Number

2.1.1 Number类型的细划分

// 不可改变的类型

Number又划分为四种类型:
(1) bool类型 True False

(2) int 整数

(3) float                                   # 1.23     3E-2

(4) complex                                 # 1 + 2j

2.1.2 PythonNumber类型的转化

int(x) 将x转换为一个整数。

float(x) 将x转换到一个浮点数。

complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

2.1.3 常见的一些数学函数 (可扩展)

max(x1, x2, ...)

min(x1, x2, ...)

pow(x, y) 

sqrt(x)

2.2 String 详见Python基础语法1

2.3.1 String小说

var1 = 'Hello world'

var2 = var1[1:5]                    # 截取原字符串 var2 = ello

if ("H" in var1):
   print("H 在变量var1中")
else:
   print("H 不在变量var1中")

2.3.1 String字符串内建函数

count(str, beg= 0,end=len(string))  # 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数    

find(str, beg=0, end=len(string))   # 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1

join(seq)                           # 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

2.3 Tuple

2.3.1 元组的格式

tup1 = ('Google', 'Runoob', 1997, 2000)         # 元组使用(),元素之间用,分割

tup2 = "a", "b", "c", "d"                       #  不需要括号也可以

tup3 = ()                                       # 空元组

tup4 = (a,)                                     # 只有一个元素的元组后面必须要加上 , 不然类型会被转义

总结: (1) 元组中各个元素的类型可能不一致

      (2) 元组中各个元素必须用 , 进行分割

      (3) ()可以省略但不建议

      (4) 元组只有一个元素的元组后面必须要加上 , 不然类型会被转义

2.3.2 元组的增删查改

(1) 访问元组-------------通过index

tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
 
print ("tup1[0]: ", tup1[0])                   # 输出 tup1[0]:  Google
print ("tup2[1:5]: ", tup2[1:5])               # 输出 tup2[1:5]:  (2, 3, 4, 5)

(2) 修改元组------------元组中的元素的值不允许修改,但可以对两个元组进行组合【元组的重组】

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')

# tup1[0] = 100                                # 以下修改元组元素操作是非法的。
 
tup3 = tup1 + tup2
print (tup3)

(3) 删除元组------------删除整个元组对象【元组的元素不允许删除】
tup = ('Google', 'Runoob', 1997, 2000)
 
print (tup)
del tup
print ("删除后的元组 tup : ")                
print (tup)                                    # 报错

2.3.2 元组的基本操作

(1) 计算元组的元素的个数  len((1, 2, 3, 4))    # 结果4

(2) 元组的重组    a = (1, 2, 3)               # c = a + b  最终c为(1, 2, 3, 4, 5, 6)

                   b = (4, 5, 6)

(3) 复制         ('Hi',)*4                    # c = ('Hi',)*4 最终c为('Hi!', 'Hi!', 'Hi!', 'Hi!')


(4) 判断某个元素是否存在 3 in (1, 2, 3)        # 返回True

(5) 元组的迭代 
for x in (1, 2, 3): 
    print (x, end=" ")                         # 输出 1 2 3

(6) 元组的截取
tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')

tup1 = tup[1:4]                                 # 输出('Runoob', 'Taobao', 'Wiki')

tup2 = tup[1:]                                  # 输出('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')

tup3 = tup[-2]                                  # 输出Weibo

2.3.3 元组的内置函数

len(tup)

min(tup)

max(tup)

将别的类型强转为tuple类型如 tuple(别的类型对象)

list = ['Google', 'Taobao', 'Runoob', 'Baidu']
tup  = tuple(list)
print(type(tup))

2.4 List

2.4.1 List的介绍

list1 = ['Google', 'Runoob', 1997, 2000]

(1) 支持不同类型

(2) 支持索引 正向索引 0---》N  反向索引 -1---》-(N + 1)

(3) 支持切片

(4) 支持对list内部元素的更改

2.4.1 List的基本操作

list = ['Google', 'Runoob', "Zhihu", "Taobao", "Wiki"]

#  查看列表 直接打印对象即可
print(list)

#  修改列表
list[2] = 2001
list.append('Baidu')
print(list)                                               # ['Google', 'Runoob', 2001, 'Taobao', 'Wiki', 'Baidu']

#  删除列表
(1)删除列表单个元素     del list[3]

(2)删除整个列表对象     del list

2.4.2 列表操作支持操作符

len([1, 2, 3, 4])                     # 求列表长度 res = 4

[1, 2, 3] + [4, 5, 6]                 # 列表的组合 res = [1, 2, 3, 4, 5, 6]

['Hi!'] * 4                           # 元素的复制 res = ['Hi!', 'Hi!', 'Hi!', 'Hi!']

3 in [1, 2, 3]                        # 元素是否存在于列表中 返回True

for x in [1, 2, 3]: print(x, end=" ") # 123 列表迭代

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b))
print("operator.eq(c,b): ", operator.eq(c,b))      # operator模块 支持两个List之间的比较

2.4.2 列表的内置函数

--------------------------------------------------------------------------------------------------------
len(list)                               # 列表长度

max(list)

min(list)

list(别的类型对象)                       # 将别的类型强转为list类型如 list(别的类型对象)
--------------------------------------------------------------------------------------------------------

list.append(x)                          # 追加单个x 

list.extend(seq)                        # 追加一个seq的列表(包含多个元素的列表)

list.count(x)                           # 统计x在列表中出现的次数

list.index(x)                           # 计算x在列表中Index

list.insert(index, x)                   # 在列表index的位置插入x

list.pop([index = -1])                  # 弹出列表中index位置的元素 默认是最后一个元素

list.remove(元素)                        # 直接移除某个元素(第一个匹配的)

list.reverse()                          # 反转列表元素

list.sort( key=None, reverse=False)     # 对列表进行排序

list.clear()                            # 清空列表

list.copy()                             # 拷贝列表

2.5 Dictionay

2.5.1 字典介绍

tinydict2 = { 'abc': 123, 98.6: 37 }

(1) 支持不同类型的键值对, 键值对之间通过,进行分割

(2) key不能重复,且key不能被更改

(3) 不支持索引

(4) 空子典的创建方式  

      tinydict = {} 
      
      tinydict = dict()

2.5.2 字典的基本操作

(1) 访问字典
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print("tinydict['Name']: ", tinydict['Name'])                  # 访问单个val

print(tinydict)                                                # 访问整个tinydict

(2) 修改字典--------增加或修改已有的键值对

tinydict['Age'] = 8                                            # 更新 Age的val

tinydict['School'] = "菜鸟教程"                                 # 新增键值对

(3) 删除字典
del tinydict['Name']                                           # 删除键值对按key 'Name'

del tinydict                                                   # 删除字典对象

tinydict.clear()                                               # 清空字典

2.5.3 字典的内置函数

len(tinydict)                                                  # 计算tinydict中的键值对

str(tinydict)                                                  # 将dictionary转化为str

type(tinydict)                                                 # 输出dictionary的类型  <class 'dict'>

key in dict                                                    # 判断key是否在dict中

dict.items()                                                   # 以列表返回一个视图对象 print ("Value : %s" %  tinydict.items())

dict.keys()                                                    # dict中的所有key

dict.values()                                                  # dict中的所有val

dict.setdefault(key, default=None)                             # 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

dict.get(key, default=None)                                    # 返回指定键的值,如果键不在字典中返回 default 设置的默认值

popitem()                                                      # 返回并删除字典中的最后一对键和值

pop(key)                                                       # 删除字典 key(键)所对应的值,返回被删除的值

dict.update(dict2)                                             # 把字典dict2的键/值对更新到dict里

2.6 Set

2.6.1 集合的并集、交集、差集、对称差、子集

namelist1={'alia','sanb','lige'}

namelist2={'alia','bobu'}

(1) 并集 |

print(namelist1 | namelist2)                         #{'alia', 'sanb', 'bobu', 'lige'}  两个set加起来去重

print(namelist1.union(namelist2))                    #{'alia', 'sanb', 'bobu', 'lige'}

(2) 交集 &

print(namelist1&namelist2)                           #{'alia'}  两个set都有的

print(namelist1.intersection(namelist2))             #{'alia'}

(3) 差集 -

print(namelist1 - namelist2)                         #{'sanb', 'lige'} set1中独有的

print(namelist1.difference(namelist2))               #{'sanb', 'lige'}

(4) 对称差集 ^ 

print(namelist1 ^ namelist2)                        #{'sanb', 'bobu', 'lige'} set1中独有 + set2中独有的

print(namelist1.symmetric_difference(namelist2))    #{'sanb', 'bobu', 'lige'}

(5) 子集  <

str1 = set("hello")

str2 = set("he")

print(str2 < str1)                                  #True

print(str2.issubset(str1))                          #True

2.6.2 集合的基本操作

集合创建的方式 (1) param = {val1, val2, ...}         (2) param = set([1, 3, 5, 7])

集合的空集表示方式 set() 而非 {}, {}表示空dictionary

集合是【无序的】【不重复的】元素序列

------------------------------------------------
# 添加元素

thisset = set(("Google", "Runoob", "Taobao"))

thisset.add("Facebook")                                # s.add(元素)        集合添加单个元素

thisset.update({1, 3})                                 # s.update(setseq)   集合添加多个元素

thisset.update([2, 4], [5, 6])                         # s.update(setseq)   集合添加多个元素update方法支持参数类型可以是列表、集合、元组、字典等
------------------------------------------------
# 删除元素

thisset.remove("Taobao")                               # 从thisset中移除Taobao这个元素, 若Taobao不存在,则报error

thisset.discard("Taobao")                              # 从thisset中移除Taobao这个元素, 若Taobao不存在,不会报错

thisset.pop()                                          # 从thisset中随机移除某个元素
------------------------------------------------
# 查看元素
print(thisset)                                         # 直接打印该set集合即可
------------------------------------------------

2.6.3 集合的常见API

len(thisset)

thisset.clear()

x in thisset