python之隐形错误
本文旨在总结python编程过程中碰到的一些隐形的问题,即能编译通过,但是不易察觉的问题。
1. 指针无处不在
不要在循环遍历中进行列表删除操作,这样会碰到地址索引更新失败的情况,容易让人联想到了C、C++里的指针问题。
# 删除列表中的数字字符串
import relist = ['Yes', ',', 'software', '-12', '12.2', '1', '-2', '+9527', '81', '9', '78.99', '-52.68']# 错误的做法:直接循环遍历的时候删除元素,会导致索引地址失效,删除不彻底
i = 0
for word in list:if re.match(r'[-+]?\d+',word):i +=1print('第 %d 次: ' % i)list.remove(word)print(word)# 正确的做法:记录需要删除的元素,另外新建列表,针对记录的元素进行删除
temp = []
for word in list:if re.match(r'[-+]?\d+.\d+$|^[-+]?\d+$|\d+$', word):temp.append(word)print(word)for i in temp:list.remove(i)print(list)
指针无处不在,上面算是Python 的隐式解指针行为的一个小例子。Python 变量更类似于(某种残缺的)指针变量,而不是引用变量。
深入理解编译器的运行原理,对与帮与理解程序有很大帮助。
2. pandas:写入excel跟写入csv的区别
import pandas as pdoutput_message = ['less academic would be good.", 'Test', '=> to match with the method `terminate_instance()`.', "Test2.", 'Test3.']output_file = pd.DataFrame({'message': output_message})
output_file.to_csv(r'D:\Test.csv', index=False)
# output_file.to_excel(r'D:\Test.xlsx', index=False)
# 这里发现有些带符号的字符串写入excel文件时会失败,写入空值;而写入csv则没有这个问题
这里发现有些带符号的字符串写入excel文件时会失败,写入空值;而写入csv则没有这个问题。很明显,写入excel碰到的问题更多,因此,个人建议写入文件时,优先选择csv。
3.
不定期更新...
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
