1.  python与C有很多相似之处, 其一就是指针的大量应用,  因此在使用临时变量保存数据, 并将临时变量传递给其他变量时需要创建内存;

例如,在C中, char *temp 每次获取到不同的字符串, 依次放入 char **list中,    先申请一块内存  char *f = malloc(sizeof(char)*10);  f=temp; *list = f;    这样temp在改变时, 就不会影响到list; 下一个 *(list+1)=..

python中使用复制申请内存,   save_temp = temp.copy(),  但是在向list集合中存储时, 不需要手动创建内存, 会自动创建;

2. 一个列表中, 循环删除预定位置的元素, 在使用双重for时会造成指针移位, 因此可使用先复制list, 遍历复制的list,  for i in copy_list:   然后在需要删除的列表 remove(i), 使用复制列表固定指针;

另一种做法是:     while(len(temp_list)>0):  i = list[0]  list.remove(i), 使用常量0 固定指针;

3. C中读取每行数据:

先在函数参数中定义字符串指针 存储行数据 read_line(File *fp, char *word),当然在函数内定义数组也可以但是相比比较耗内存,  然后为每个位置赋值;

*word = '\0';

char var = fgetc(fp);

while(var != EOF && var != '\n'){

*(word++) = var;    //为当前位置赋值

*word = '\0'           //为下一个位置赋值, 避免无法读取内存

var = fgetc(fp);

}

4. C中对每行数据, 按符号进行切分, 例如每行数据按 ;切割

split_seq(char *line,char **f):

char temp[30];      //存储临时数据

size_t i;                //记录字符地址长度

char *copy;          //创建新空间

while(strlen(line)>0){

char *p = strchr(line, ';');       //找到分隔符位置

size_t  sub_len = strlen(line) - strlen(p);    //计算需要切割的长度

for(int i=0; i<sub_len; i++){

temp[i] = line[i];

}

temp[i] = '\0';             //将数据填充进temp

copy = malloc(sizeof(char)*10);   //创建内存,固化数据

strcpy(copy, temp);

*f = copy;

line = p+1;     //移动line的指针

if (*line == '|') break;

f = f+1;         //如果不是结尾, 则增加指针;

memset(temp, 0, sizeof(temp));           //相当于clear 数组;

}

5. C中找到目标key值:

 char temp[30];    //key最长30
 int targe_len = strlen(targe);
 
 bool flag = false;
 while (!flag)
 {
  char *p = strchr(line, targe[0]);    //找到目标字符串的开头位置, *p 是在line的地址
  if (!p) return flag;
  
  int i;
  for (i = 0; i < targe_len; i++) {
   temp[i] = p[i];
   //*(temp + i) = *(p + 1);
  }
  flag = strcmp(temp, targe);         //是否能找到目标字符串, key值,  在这里判断的原因在于 加上'\0'后, 就无法判断字符串相等;
  temp[i] = '\0';   
}

6. python字典的一些用法:  初始化字典的一个技巧-> indict_init = lammda:{'conv_w':None, 'conv_b':None}      conv_bn = indict_init()即可完成初始化  conv_bn[...]赋值

判断字典中是否有该key,   if conv_bn.get(...),  判断value是否为空 if conv_bn[...] is None,

对字典排序  sorted(dict.keys())     或者 sorted(dict.items())

7. 将矩阵展开为一维集合 [ i for line in matrix for i in line ] ,   对矩阵各列排序  sorted(param_matrix, key=lambda params:[params[3],params[1]],reverse=True),

将map的用法:   min([i[0] for i in list(map(lambda x: (x[1],x[3]), params)) if i[1]<height])

将多个list组成一个矩阵  np.c_[all_index, length, width, height, priority, price]

8. 使用pandas做文本操作:  data_set = pd.read_excel(path)

# 清洗尺寸中的空值项
null_num = data_set['尺寸'].isnull().value_counts() data_set['尺寸'].apply(lambda x: np.NAN(x) if str(x).isspace() else x)
data_set['尺寸'].fillna(143)
null_index = data_set[(data_set['尺寸'] == 143)].index.tolist()
data_set = data_set.drop(null_index, axis=0) # 拆分尺寸
loc = data_set['尺寸']
loc = loc.tolist()

python与C,在写程序时踩过的坑!的更多相关文章

  1. STM32用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain现象和解决方案

    现象 CPU: STM32107VC 用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain 如图无法查找到硬件就是CPU 提示1:NO Cortex ...

  2. object-c cocos2d-x 写程序时注意调试的技巧

    (1)写程序时最好在类的init函数中显示类名,表明现在在执行哪个类,样例代码 CCLOG(@"cocos2d: Using Director Type:%@", [self cl ...

  3. 小程序——微信小程序初学踩过的坑

    微信小程序初学踩过的坑 一.前言     最近因为某些需要和个人兴趣打算开发一下微信小程序,经过在官方网站上的基本了解,我大体知道了微信小程序开发的大致过程,其实最本质的就是MVVM,借用了很多模式上 ...

  4. [问题解决]RedHat7更换CentOS7的yum源时踩过的坑

    更换yum源的流程 查看当前yum程序 $ rpm -qa|grep yum 这里推荐将其结果截屏或拷贝出来,以免后面报错修复. 删除原有yum源 $ rpm -aq | grep yum|xargs ...

  5. 使用Ajax中get请求发送Token时踩的那些坑

    在使用惯了各种牛X的插件以后,在使用原生组件写一些小东西的时候总是有踩不完的坑! 今天就来说一说我使用原生ajax请求时踩得坑: 下面是我的代码: var xmlhttp; if (window.XM ...

  6. Python 官方团队在打包项目中踩过的坑

    花下猫语:这是 packaging 系列的第三篇译文,该系列是全网关于此话题的最详尽(水平也很高)的一个系列.原作者是 Python 官方打包团队成员,是 virtualenv 和 tox 项目的维护 ...

  7. 研究slatstack时踩过的坑,注意点及解决方案

    运行问题 1.直接物理性移除minion或者更换minion原先连接的master,会导致先前的master始终无法ping通minion [root@localhost salt]# salt '* ...

  8. 记录一下自己写PHP程序时走过的一些坑

    写在前面: 喔噢,转眼间发现自己正式开发程序(PHP)已经有快有1个月了,一路上走了许多的坑,有时遇到坑的时候真想放弃,但是还是坚持下来了!所以写了这篇文章来帮助那些刚刚接触PHP的小白们.[: )] ...

  9. 写程序时try,catch查看报错的行号

    try {    ////////////////    代码段   //////////////// }catch(Exception ex) {     MessageBox.Show(ex.St ...

随机推荐

  1. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  2. CISCO静态路由配置

    静态路由:手动添加路由条目到路由表中 优点:没有额外的路由cpu负担,节约带宽,增加网络安全性. 缺点:必须去了解整个拓扑结构,如果网络拓扑发生变化,需要在所有r路由上手动修改路由表. 实验拓扑如下: ...

  3. Linux 简介(day1)

    一.Linux 诞生于1991年 二.创始人:林纳斯.托瓦茨(Linus Torvalds) 三.logo:企鹅 四.Linux完整系统包括 1.Linux kernel (Linux 内核) 2.f ...

  4. deeplearn.js

    http://blog.csdn.net/rongxiang111/article/details/78083867 <!DOCTYPE html> <html> <he ...

  5. 使用Docker在本地搭建Hadoop分布式集群

    学习Hadoop集群环境搭建是Hadoop入门必经之路.搭建分布式集群通常有两个办法: 要么找多台机器来部署(常常找不到机器) 或者在本地开多个虚拟机(开销很大,对宿主机器性能要求高,光是安装多个虚拟 ...

  6. 利用nginx搭建小型的文件服务器

    PS内的文件如果需要共享给其他计算机下载,可以选择ftp的方式,优点是操作性很高,修改删除下载等等都可以,但是速度略慢. 如果仅仅是将VPS作为文件中转站,可以尝试用Nginx架设一个简单的文件服务器 ...

  7. centos7下安装docker(15.8docker跨主机容器通信总结)

    性能:underlay网络的性能优于overlay.Overlay网络利用隧道技术,将数据包封装到UDP中进行传输,由于涉及数据包的封装和解封,存在额外的CPU和网络的开销,虽然几乎所有overlay ...

  8. P2256 一中校运会之百米跑(map+并查集)

    思路:首先处理名字,让字符串直接映射唯一一个数字,这就用map<string, int>即可. 然后,直接用并查集 #include<iostream> #include< ...

  9. oracle sys_guid

    select sys_guid() from dual;

  10. Go调试工具—— Delve

    参考https://github.com/go-delve/delve 安装 首先你必须有等于或高于1.8版本的Go,我的版本是: userdeMBP:go-learning user$ go ver ...