当前位置: 首页 > news >正文

【python】list、tuple、dict、set、dataframe、narray、series之间的区别

list、tuple、dict、set这4个是python的基本数据结构,其他几个不是, 是根据需要自己定义的数据结构.

1、列表list和元组tuple之间的差异

list列表和tuple元组的“技术差异”是,list列表是可变的,而tuple元组是不可变的。这是在 Python 语言中二者唯一的差别。(所以tuple大多数情况比list快)

2、dict和set之间的差异呢?

我这样理解,dict是键不重复的键值对集合,set元素的集合

d ict= {

'Adam': 95,

'Lisa': 85,

'Bart': 59

}

set = ['Adam','Lisa','Bart']

3、list和set之间的差异呢?

List的特点:元素有放入顺序Set特点:元素无放入顺序,元素不可重复

更多:

Set重复元素会覆盖掉(注意:元素虽然没有放入顺序,但是元素在set中的位置是有该元素的hashcode决定的,其位置其实是固定的,加入set的Object必须定义equals()方法,另外list支持for循环,也就是通过下标来进行遍历,也可以用迭代器,但是set只能迭代,因为它是无序的,无法用下标来取得想要的值)。

Set和List的读写性能对比

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置变化。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

set转成list方法如下:                                                     list转成set方法如下:
s = set('12342212')                                                       l = ['12342212']
print s    # set(['1', '3', '2', '4'])                                       s = set(l[0])
l = list(s)                                                                         print s    # set(['1', '3', '2', '4'])
l.sort()    # 排序                                                             m = ['11','22','33','44','11','22']
print l    # ['1', '2', '3', '4']                                               print set(m)    # set(['11', '33', '44', '22'])

可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。

https://www.linuxidc.com/Linux/2012-07/66404.htm

4、dict和dataframe之间的差异呢?

dataframe 有行索引和列索引 如:

df=

dict是一个键值对集合:

dict = {'Name': 'Zara', 'Age': 7}

相互转换:

In [6]:
df=pd.DataFrame({'key':['a','b','c'],'data1':[1,2,3],'data2':[4,5,6]})  
print(df)


  key  data1  data2
0   a      1      4
1   b      2      5
2   c      3      6



In [7]:
dict2 = df.to_dict()
print(dict2)


{'key': {0: 'a', 1: 'b', 2: 'c'}, 'data1': {0: 1, 1: 2, 2: 3}, 'data2': {0: 4, 1: 5, 2: 6}}

转成以列的key为键,以存储列的值的list为值的dict

In [8]:

{col:df[col].tolist() for col in df.columns} 


Out[8]:

{'key': ['a', 'b', 'c'], 'data1': [1, 2, 3], 'data2': [4, 5, 6]}

https://blog.csdn.net/mooncrystal123/article/details/84334611

dateframe的处理:https://blog.csdn.net/xieyan0811/article/details/78834870

5、list和array之间的差异呢?

list中的数据类不必相同的,而array的中的类型必须全部相同
所以:

  • list 是列表,可以通过索引查找数值,但是不能对整个列表进行数值运算
  • array是数组,可以通过索引值查找值,能对整个数组进行数值运算

在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。

In [96]: b=[1,2]

In [99]: b+b

Out[99]: [1, 2, 1, 2]

array是数组,也可以通过索引值查找数据,但是能对整个数组进行数值运算

In [100]: a=np.array([1,2])

In [103]: a+a

Out[103]: array([2, 4])

更多:https://blog.csdn.net/liyaohhh/article/details/51055147#reply

6、list和series之间的差异呢?

series 可以看成是多了元素索引的list。

import pandas as pd 
list_a = [2,4,5,6] 
pd.Series(list_a) 

Out[14]:

0    2
1    4
2    5
3    6
dtype: int64
In [11]: pd.Series({'a':1,'b':3},index = ['b','a','c'])
Out[11]:
b    3.0
a    1.0
c    NaN
dtype: float64

https://blog.csdn.net/brucewong0516/article/details/79196902

7、ndarray和darray差异?

暂时没有找到答案。

相关文章:

  • 【python】python3.7数据分析入门学习笔记 研读
  • 【VS输出UTF8】 C++ 控制台程序中输出UTF8字符乱码问题解决方法
  • 【python】python一些热点问题
  • 【thrift】thrift 研究
  • 【人工智能】我的人工智能之旅——线性回归 研读
  • 【python】Python Web服务器并发性能测试
  • 【protocolbuff】linux下安装google protobuf[实践] --未成功
  • 【ML】之 线性回归(实战) 研读
  • 【VS2017】VS2017离线安装教程
  • 【hadoop】为什么要用hadoop?
  • 【容器适配器】什么是容器适配器和用法
  • 【socket】setsockopt函数的作用和说明
  • 【hadoop】Hadoop编程实例之MapReduce
  • 【VS】发布库lib/dll 带运行环境(/MT、/MTd、/MD、/MDd)静态库/动态库
  • 【linux】Rehat linux离线安装GCC等软件的方法
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • springMvc学习笔记(2)
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 入口文件开始,分析Vue源码实现
  • 物联网链路协议
  • 学习笔记TF060:图像语音结合,看图说话
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (6)STL算法之转换
  • (a /b)*c的值
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (排序详解之 堆排序)
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)Linq学习笔记
  • .NET Core 项目指定SDK版本
  • .NET MVC之AOP
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net Winform开发笔记(一)
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET单元测试
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET与 java通用的3DES加密解密方法
  • @Bean, @Component, @Configuration简析
  • @FeignClient注解,fallback和fallbackFactory
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • [ C++ ] STL---string类的模拟实现
  • [Angular 基础] - 表单:响应式表单
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BIZ] - 1.金融交易系统特点
  • [C++]类和对象【上篇】
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • [Java] IDEA Scala环境搭建
  • [leetcode] 61. 旋转链表
  • [lintcode easy]Maximum Subarray
  • [MySQL光速入门]003 留点作业...
  • [NOI2012]迷失游乐园