本文旨在总结python编程过程中碰到的一些隐形的问题,即能编译通过,但是不易察觉的问题。
1. 指针无处不在
不要在循环遍历中进行列表删除操作,这样会碰到地址索引更新失败的情况,容易让人联想到了C、C++里的指针问题。
# 删除列表中的数字字符串
import re
list = ['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 +=1
print('第 %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 pd
output_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.
不定期更新...