数据类型的补充

 编码转换

    # s1 = '中国'
    # b1 = s1.encode('utf-8')
    # # print(b1)-------------->b'\xe4\xb8\xad\xe5\x9b\xbd'
 utf-8 bytes --->gbk bytes
    # s2 = b1.decode('utf-8')
    # # print(s2)---------------中国
    # b2 = s2.encode('gbk')
    # print(b2)------------------b'\xd6\xd0\xb9\xfa'

    

 数据类型的补充
 元组

    tu1 = ('laonanhai')
    tu2 = ('laonanhai',)
    print(tu1,type(tu1))-----------laonanhai <class 'str'>
    print(tu2,type(tu2))-----------('laonanhai',) <class 'tuple'>

    tu1 = (1)
    tu2 = (1,)
    print(tu1,type(tu1))-------------1 <class 'int'>
    print(tu2,type(tu2))(1,) -----------<class 'tuple'>

 元组里面如果只有一个元素且没有逗号,则该数据的数据类型与里面的元素相同
    tu1 = ([1, 2, 3])
    tu2 = ([1, 2, 3])
    print(tu1, type(tu1))----------[1, 2, 3] <class 'list'>
    print(tu2, type(tu2))----------[1, 2, 3] <class 'list'>

 list

    l1 = [111, 222, 333, 444, 555,]

    索引为奇数对应的所有元素全部删除。
    del l1[1::2]
    print(l1)--------------[111, 333, 555]

***在循环一个列表时,最好不要改变列表的大小,会影响你的最终结果
倒着删除:

for index in range(len(l1)-1,-1,-1):

if index % 2 == 1:

del l1[index]

print(l1)--------------------[111, 333, 555]

dict

dic = dict.fromkeys('abc',666)

print(dic)-----------------{'a': 666, 'b': 666, 'c': 666}

dic = dict.fromkeys([11, 22, 33],666)

print(dic)--------------------{11: 666, 22: 666, 33: 666}

dic = dict.fromkeys([1, 2, 3], [])

dic[3].append(666)

print(dic)----------------------{1: [666], 2: [666], 3: [666]}

***在循环dict中,最好不要改变dict的大小,会影响结果或者报错。

dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3','name': 'alex'}for i in dic:

if 'k' in i:

del dic[i]

l1 = []

for key in dic:

if 'k' in key:

l1.append(key)

print(l1)

for key in l1:

del dic[key]

print(dic)---------------------报错(原因是字典在迭代过程中改变大小)

数据类型的转换:
str----------->list    split
list--------->str       join
tuple-------->list
tu1 = (1, 2, 3)
l1 = list(tu1)
print(l1)------------------[1, 2, 3]
tu2 = tuple(l1)
print(tu2)----------------(1, 2, 3)

dic----------->list     list(dic)(列表中的元素只有key)

dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3',}
l1 = list(dic)
print(l1)------------------------['k1', 'k2', 'k3']
print(list(dic.keys()))------------['k1', 'k2', 'k3']
print(list(dic.values()))------------['v1', 'v2', 'v3']
print(list(dic.items()))---------------[('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]

0, '', [], () {}  ---> bool 都是Fasle
print(bool([0, 0, 0]))------------True

集合
    集合本身是可变的数据类型,不可hash,有增删改查操作
    set集合是python中的一个基本数据类型
    set中的元素是不重复的,无序的,里面的元素必须是可hash的(int,str,tuple,bool)
    set就是dict类型的数据但是不保存value

set集合的增删改查

1增加

.add()

s = {"刘嘉玲", '关之琳', "王祖贤"}

s.add("郑裕玲")

print(s)

s.add("郑裕玲")    # 重复的内容不会被添加到set集合中

print(s)

s = {"刘嘉玲", '关之琳', "王祖贤"}

s.update("麻花藤")    # 迭代更新

print(s)

2.删除

s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"}

item = s.pop()  # 随机弹出⼀一个.

s.remove("关之琳") # 直接删除元素

# s.remove("⻢马⻁虎疼") # 不存在这个元素. 删除会报错

s.clear()    # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和 dict区分的.

3.修改

set集合中的数据没有索引. 也没有办法去定位一个元素. 所以没有办法进行直接修改.

# 我们可以采用先删除后添加的方式来完成修改操作

s.remove("刘嘉玲")

s.add("赵本山")

4.查询

# set是⼀一个可迭代对象. 所以可以进行for循环

for el in s:

print(el)

set集合本身是可以发生改变的. 是不可hash的. 我们可以使用frozenset来保存数据.

frozenset是不可变的. 也就是⼀个可哈希的数据类型

深浅拷贝

浅拷贝. 只会拷贝第⼀层. 第二层的内容不会拷贝. 所以被称为浅拷贝

lst1 = ["何炅", "杜海海涛","周渝⺠民", ["麻花藤", "⻢马芸", "周笔畅"]]

lst2 = lst1.copy()

深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产生⼀个改变另⼀个跟着 改变的问题
import copy
lst1 = ["何炅", "杜海海涛","周渝⺠民", ["麻花藤", "⻢马芸", "周笔畅"]]

lst2 = copy.deepcopy(lst1)

 

深浅拷贝 set集合的更多相关文章

  1. python基础知识四 小数据池,深浅拷贝,集合+菜中菜

    四.小数据池,深浅拷贝,集合+菜中菜 1小数据池 --缓存机制(驻留机制) ​ '==' 判断两边内容是否相等 ​ 'is' 基于内存地址进行判断是否相同 a = 10 b = 10 print(a ...

  2. python 学习笔记5(深浅拷贝与集合)

    拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个 ...

  3. 12 python 初学(深浅拷贝、集合)

    深浅拷贝:参考:http://www.cnblogs.com/yuanchenqi/articles/5782764.html s = [[1, 2], 'lily', 'hello'] s2 = s ...

  4. Python学习(006)-深浅拷贝及集合

     深浅拷贝 import copy husband=['xiaoxin',123,[200000,100000]] wife=husband.copy() #浅拷贝 wife[0]='xiaohong ...

  5. day06——小数据池、深浅拷贝、集合

    day06 小数据池 小数据池--缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间 == 判断两边内容是否相等 ***** # a = 10 # b = 10 # print(a == b) ...

  6. 深浅拷贝、集合set、函数、日志

    #-----深浅拷贝---- import copy a = ["xiaoming",111,[5000,2000]] b = a print("b:%s" % ...

  7. python27期day06:小数据池、深浅拷贝、集合、作业题。

    0.pycharm是代码块.黑窗口是小数据池.如下图: 1.驻留机制(长得像的共用一个内存地址)分小数据池缓存机制:后期开发时能明确知道.为什么不能正常使用.把经常用的东西放入规则(黑窗口)里. 数字 ...

  8. Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数

    一.上节课的重点回顾: 1.类名加括号其实就是执行类的__init__方法: 2.int a.创建方式 n1 = 123 #根据int类创建了一个对象 n2 = int(123) #根据int类创建一 ...

  9. 3.python基础补充(集合,collection系列,深浅拷贝)

    一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复 ...

随机推荐

  1. uwsgi模块以参数形式运行项目

    1.虚拟环境中下载uwsgi模块-------pip install uwsgi 2.脚本运行案例 新建一个test.py脚本文件,写入如下内容: def application(env, start ...

  2. 排序算法的总结——Java实现

    前言 简单归纳一下最近学习的排序算法,如果有什么错误的地方还请大家指教. 本文介绍了七种经典排序算法,包括冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序以及堆排序,并且讨论了各种算法的进一 ...

  3. 统计元音(hdu20)

    输入格式:输入一个整型,再循环输入带空格的字符串. 思考:先用scanf()函数输入一个整型,后面直接来个大循环,带空格字符串输入直接用gets()函数. 注意:由于scanf()里面多加了%c,&a ...

  4. 一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!

    Turtle库手册可以查询查询 python图形绘制库turtle中文开发文档及示例大全,手册中现有示例,不需要自己动手就可以查看演示. 使用Turtle画树,看了一下网上的代码,基本上核心的方法是使 ...

  5. Xilinx的DocNav文件导航中的文档开头字母缩写都是什么意思?

    在安装Xilinx的开发软件后都会附带安装一个用于查阅Xilinx技术文档的文件导航工具DocNav. 在DocNav中可以找到几乎所有对我们开发Xilinx FPGA有用的技术文档,其中的文档数量更 ...

  6. 搭建Istio基础环境

    需求 搭建istio基础环境(基于1.5.1版本) 安装步骤 在安装 Istio 之前,需要一个运行着 Kubernetes 的环境,安装步骤可以参考前面的文章 下载istio,然后解压,然后将 is ...

  7. CSS用户自定义样式

    在浏览器中打开前面写的例子页面,你会发现 <strong> 元素中的文字会比其他文字粗一些.这些样式就是在浏览器定义的默认HTML样式. 而<strong> 元素是红色的,这是 ...

  8. 关于MySQL无法启动的一点问题

    今天早上做作业启动MySQL遇到服务无法启动的问题,在网上找方法解决找了一个钟. 修改host文件,重装mysql服务,就差卸载重装了.到后面终于找到问题,原来是我之前改了root密码,所以每次启动m ...

  9. (Java实现) 零件分组

    零件分组(Stick)-动态规划-中高级 Case Time Limit:1000MS Time Limit: 3000MS Memory Limit: 65536K Total Submission ...

  10. Java实现蓝桥杯模拟正整数序列的数量

    问题描述 小明想知道,满足以下条件的正整数序列的数量: 1. 第一项为 n: 2. 第二项不超过 n: 3. 从第三项开始,每一项小于前两项的差的绝对值. 请计算,对于给定的 n,有多少种满足条件的序 ...