C++
1.相同类型的数据
01. C++数组(array)是一种顺序容器sequence container,是由单一数据类型元素组成的一个有序集合
元素类型 元素个数 数组名称
使用索引来标识和访问元素
数组是存放类型相同的对象的容器,数组的大小确定不变,不能随意向数组中增加元素
不能直接将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值
02.C++中vector为类模板
#include <vector>
vector是类型相同的对象的容器,vector的大小可以变化,可以向数组中增加元素
03.array是c++ 11新增的序列容器
#include <array>
02.枚举 enum C++的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const。它还允许定义新类型
2.不同类型的数据
01.数据类型
001.共用体(union)是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型--条件是在不同的时间进行
共用体每次只能存储一个值,因此它必须有足够的空间存储空间占用最大的成员
的用途之一:当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间
003.结构体 struct c++对结构体进行了扩展
C++的结构体可以包含函数,这样,C++的结构体也具有类的功能,与class不同的是,结构体包含的函数默认为public,而不是private。
从struct继承默认是public继承
02.通过类的方式
通过成员变量-其数据类型可能是int,float,double,char[],std::string,std::vector
3.函数-数组-指针-引用
访问数据的方式
访问元素--通过索引
访问数组元素--每个元素都分配有一个称为下标的数字。
下标用作一个索引来精确定位一个数组中的特定元素,第一个元素分配下标 0,第二个元素分配下标 1,依此类推。
通过成员变量--通过成员变量名
. . 是结构体 的成员运算符
-> -> 是指针 指向其成员的运算符
点运算符“.”应用于实际的对象,箭头运算符“->”与一个指针对象的指针一起使用
:: ::是域作用符,是各种域性质的实体(比如类(不是对象)/名字空间等)调用其成员专用的 使用域作用符来加以区别;
前面没写具体的域名,就是指默认域
共享和保护数据
保护数据:作用域 生存周期 可见性
私有数据成员不能在类体外被访问-可见性
类对象之间也不能互相访问对方的私有成员
数据既需要保持其私有性,又需要其有共享性
//全局变量的作用域-整个程序运行期间有效-但会因一些原因而不可见
// 局部模块生命了同名的变量,则在局部的模块中,可见的时局部变量,全局变量不可见
//局部变量只限于相应的程序模块中,离开了相应模块,局部变量不再存在
#include <iostream>
using namespace std;
void fn1();
int x=1,y=2;
int main()
{
cout << "main x and y " <<x<<" "<<y<<endl;
int x = 10,y=20;
cout <<"local var same name in main x and y value : " << x<<" "<< y <<endl;
cout <<"step into fn1()..same name var leave main" << endl;
fn1();
cout<<"back to main x y : "<< x<<" "<<y<<endl;
return 0;
}
void fn1()
{
int y =200;
cout<< "in local fn1 x and y: " << x<< " "<<y <<endl;
}
遍历数组
//传统下标法
int main( ){
int a[10] = {1,2,3,4,5,6,7,8,9,10};
for (int i=0;i<10;i++){
cout<<a[i]<<endl;
}
}
//数组是连续的空间,所以地址也是连续的。所以,数组名即为数组首元素地址。数组名加数组长度-1即为数组尾元素地址
int main( ){
int a[10] = {1,2,3,4,5,6,7,8,9,10};
for (int *p=a;p!=a+10;p++){
cout<<*p<<endl;
}
}
// C++11中增加的功能,可以方便的对同一类型的范围数据做遍历
// C++11增加了一个行特性foreach(Range-based for loops ,基于范围的for循环)。可以对集合、数组、初始化列逐个访问
int main( ){
int a[10] = {1,2,3,4,5,6,7,8,9,10};
for (int i : a) {
cout<< i <<endl;
}
}
//迭代器是用来访问容器内元素的类模板
// 同时我们也可以使用std::for_each完成同样的功能
// 为了统一代码并让数组支持迭代器,C++11提供了两个新模版函数std::begin、std::end,这两个模版函数可以作用于容器和数组
int main( ){
int a[10] = {1,2,3,4,5,6,7,8,9,10};
for(int* p = begin(a);p!=end(a);p++){
cout<<*p<<endl;
}
}
自定义支持foreach访问的集合类,为了支持foreach遍历,类内部只需要实现begin和end成员函数
Python访问数据的方式
pandas
[ ],这是一种最常用的数据访问方式
数字切片和标签切片两种情况
loc/iloc,可能是除[]之外最为常用的两种数据访问方法,其中loc按标签值(列名和行索引取值)访问、iloc按数字索引访问
where filter
get
python遍历列表
利用列表长度和 range()函数遍历
使用 for 循环遍历
利用 iter() 迭代器遍历
利用 enumerate()函数遍历
参考
https://www.cnblogs.com/haruyuki/p/15680044.html
python
tuple list
可变和不可变
Series 相同数据类型
Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型
Series 由索引(index)和列组成--
data 元素 dtype 数据类型
name 名称
index 索引
DataFrame
不同的数据类型
C语言还规定了几个常见的自定义类型:结构体、枚举、联合体
C语言中,可以使用结构体来实现存放一组不同类型的数据
在C语言中,结构体(struct)是复合数据类型的一种。
同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型
,成员一般用名字访问。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
注:在C语言中,结构体不能包含函数。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为