python小白入门学习笔记.1 数据类型

       python 3 中有6种数据类型,分别是:数值、字符串、列表(list)、元组(tuple)、字典(dictionary)、集合(set),数值、字符串、元组为不可变的数据类型。

        一  数值

        int 在python 3 中,无论整数大小,统称为int型号。另外可以用十六进制(0x)和八进制(0o)表示。

        float 浮点数。

        bool 布尔数,取值为True或False。其运算有not,and,or。

        complex  复数,可以用a+bj 或complex(a,b)来表示。

        数值的操作运算 +、-、*、/、//(整除)、%(求模)、**(乘方)。

        不可变的数据类型若改变数据类型的值,也会重新分配内存空间。

        二 字符串 

        python不支持单字符类型。

        字符串运算符 

  1. + 字符串连接。
  2. * 重复输出字符串。
  3. [ ] 通过索引获取字符串中的字符。
  4. [ : ] 获取字符串中的一部分,遵循左开右闭的原则。如[ 1:4:1 ]=[ 1:4 ],而[ 4:1:-1 ]反向输出。
  5. in和not in 成员运算符,返回布尔数。
  6. r或R 原始输出,包括令转义字符原样输出。    

        字符串内建函数 

  1. len(str)返回字符串长度。
  2. str.count(str1,beg=0,end=len(str)) 返回str1在str里面的出现次数,可以用beg和end限定搜索范围。
  3. str.find(str1,beg=0,end=len(str)) 检测str1是否出现在字符串中。若存在则返回开始的索引值,否则返回-1。
  4. str.rfind(str1,beg=0,end=len(str)) 从右边开始find。
  5. str.index(str1,beg=0,end=len(str)) 与find()一样,不过,不过如果str1不在会报一个异常。
  6. str.rindex(str1,beg=0,end=len(str)) 同理。
  7. str.isdigit() 字符串只包含数字返回True,否则False。
  8. str.replace(str1,str2, num=str.count(str1)) 把str中的str1替换为str2,如果指定num,那么不超过num次数。
  9. str.split(str1=" ",num=str.count(str1)) 以str为分隔符截取字符串,截取num+1个字串。
  10. str.strip([chars]) 截掉字符串左边的空格或指定的字符,并且删除字符串末尾的空格。

        三 列表 

        创建列表的时候,列表内的数据类型可以不同。常常在列表中嵌套列表。

        列表也可以有+,*的操作,也有迭代操作:

l = [1, 2, 3, 4]
for x in l:
    print(x, end='')

        列表的截取与字符串的截取类似。

        列表更新 

  1. list.append(a) 增加元素a。
  2. list.remove(a) 删除元素a。

        相关函数 

  • len() 返回元素个数。
  • max()、min() 返回列表中元素的最值。
  • list(seq) 将可迭代对象seq转化为列表。

        range()和enumerate()函数

         range()函数返回一个可迭代的对象,而不是列表类型。结构为:

         range(start,stop[,step]).start默认为零,step为1.默认下可以直接range(stop)

遵循左闭右开原则

        enumerate()函数用于将一个可遍历的数据对象组合为一个索引序列,通识给出数据和数据的下标。语法格式如下:

        enumerate(sequence,[start=0])

其中sequence为一个序列,start表示下标的起始位置。 

lis = [1, 2, 3, 'lbwnb']
for index, item in enumerate(lis, 0):
    print(index, item)

 列表推导式

       这是一种生成特定列表的简单形式,例如:

a = [2, 4, 6]
b = [3*x for x in a]  # 用for来遍历a
c = [3*x for x in a if x > 3]  # 用if语句进行过滤
d = [[x, x**2] for x in a]
e = [x*y for x in a for y in b]
print(a, b, e)  # 会发现其实生成了一个二阶张量
print([a[i]*b[i] for i in range(len(a))]) #这样就可以防止生成张量

列表的映射

        map(function,iterable,...)可以根据提供的函数来对一个或多个列表进行映射,其返回值是一个迭代器,可以通过list()转换为列表。

        例如:

def square(x):
    return x**2
    
a = [1, 2, 3, 4, 5]
b = list(map(square, a))
print(b)
c = map(lambda x: x**2, a)  # 使用lambda匿名函数
d = map(lambda x, y: x+y, a, c)
print(list(d))

列表的方法

  1. list.clear() 清空列表。
  2. list.append(obj) 在尾部添加新元素。
  3. list.count(obj) 统计某元素在列表中出现的次数。
  4. list.index(obj) 找出元素第一次出现的索引。
  5. list.insert(index,obj) 将元素插入列表。
  6. list.pop([index=-1]) 默认移除最后一个元素,同时返回该元素的值。
  7. list.remove(obj) 移除列表中某个值的第一个匹配项。
  8. list.reverse() 反向列表中的元素。
  9. list.sort() 对列表中的元素进行排序。
  10. list.copy() 复制列表。

列表排序的方法 

        使用函数sorted(list)会返回一个对象,可以用作表达式,不改变原有的列表。

        list.sort(func=None,key=None,reverse=False),其中key指出用来比较的元素,只有一个参数;reverse 指出排序规则,为True为降序。 key接受的是一个只有一个形参的函数,例如:

def f(a):
return len(a)

key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序。

可以同时对多个关键字排序。

        元组类型与列表类型类似,就是不能二次修改。

四 字典

    字典中每个元素都是键值,即:key:value,元素之间用逗号隔开。包裹在花括号中。

其中键是唯一的,但是值可以是任意数据类型。键必须为不可改变的数据类型,如字符串、数值、元组。

city = {1: "beijng", 2: "tianjin", 3: "shanghai"}
print("%s" % city[2])

         给已存在的键赋值会修改对应的元素,给不存在的键赋值会添加新元素。可以使用del()函数来删除指定键的和对应的元素。使用len()获取字典内键的个数,str()输出字典,以可打印的字符串来表示。

        字典方法

  1. dict.clear() 
  2. dict.get(key,default=None) 返回指定键的值,若不存在则返回default的值。
  3. key in dict 如果键在字典中返回True。
  4. dict.items() 以列表返回可遍历的(键,值)元组数组。一般用这个方法解读字典。
  5. dict.keys() 返回一个迭代器,可以使用list() 转化为列表。
  6. dict.values() 返回一个迭代器,可以使用list() 转化为列表。
  7. dict.setdefault(key,default=None) 和get() 类似,但是如果键不存在于字典中,将会添加键并把值设置为default。
  8. pop(key[,default]) 删除key对应的元素,返回值为被删除的元素的值。
  9. popitem() 随机返回并删除字典中最后一项的键和值。

         五 集合

        集合是一个无序的不含重复元素的序列。

        两个集合a,b之间可以进行-,|,&,^运算:

  1. - 返回在a中不在b中的元素。
  2. | 返回集合的并。
  3. & 返回集合的交。
  4. ^ 返回集合的异或。

        创建集合要用到{value1,value2,...}或set(value)。注意不能用{}创建空集合,因为这样会生成一个空字典。

a = {'a', 'b', 'c', 'd', 'a'}
b = set('abbcd')
print(a, b) #输出{'c', 'a', 'b', 'd'} {'c', 'a', 'b', 'd'}

         同样可以用in来判断元素是不是在集合内部。

        集合内置方法

  1. set.add() 为集合添加新元素。
  2. set.clear()
  3. set.difference() 返回集合的异或。
  4. set.intersection() 返回集合的交。
  5. set.isdisjoint() 判断集合是否分离。
  6. set.issubset(set1) 判断set是否为set1的子集。
  7. set.remove() 移除指定元素。
  8. set.union() 返回集合的并。
  9. set.update() 给集合添加元素。

六 列表的复制

        1.非复制方法——直接赋值法。

         如果直接用b=a来对b进行赋值,那么修改其中任意一个列表中的元素都会影响另一个列表中的元素。这么来看此时a,b有C中指针内味了。

        2.列表的深复制

        列表深复制是通过copy模块的deepcopy()实现的,如b=deepcopy(a).

        3.列表的浅复制

        使用copy()方法实现对列表的浅层复制。这种方法只能对列表的第一层实现深复制,嵌套结构仍然是浅复制。这很好理解,因为内层的列表结构储存的实际上是地址(指针?),复制第一层的时候直接把第一层全部搬了过去,也就是说其实内层地址还是那个地址,改变新列表里内层的值实际上是索引到这个地址本身。

        这种复制方法和一层for循环来一一赋值是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值