python 列表循环中的小问题

项目中遇到的一些问题,做个笔记
贴代码

#判断一个元素是否在列表中
def elementInLsit(cityname):

    citysName = ['西宁', '惠州', '牡丹江', '本溪', '银川', '延安', '章丘', '石家庄', 
                 '成都', '淄博', '福州', '济宁', '泰州', '中山', '汕头', '金华', '濮阳',
            
                 '桂林', '洛阳', '安阳', '唐山', '泰安', '温州', '宿迁', '漳州', '扬州', '丽水']


    result = False
    for city in citysName:
        if str(cityname) == str(city):
            # 存在
            result = True

    return result

Citynames  = [ '鞍山', '安阳','安庆', '安康', '安顺', '阿坝',
                 '阿克苏', '阿里', '阿拉尔', '阿拉善盟', '澳门',
                '北京', '保定', '包头', '滨州', '宝鸡', '蚌埠', '本溪', '北海', '巴音郭楞', '巴中',
              
         '定安', '琼中', '屯昌', '文昌市', '东海', '陵水', '琼海', '保亭', '万宁', '东方市', '宁国', '天长']


print(len(anCitynames))


tumpList2 = anCitynames 


print(len(tumpList2))

for cityname in anCitynames:
    if elementInLsit(cityname):
        tumpList2.remove(cityname)




print(len(tumpList2))


python的列表list可以用for循环进行遍历,实际开发中发现一个问题,就是遍历的时候删除会出错
第一个数组是 第二个数组 的子集(这是前提) ,也就是说第一个数组中的元素全部在第二个数组中,一开始怎么都对不上数,究其原因是因为这一句
tumpList2 = anCitynames
赋值有问题.如果这样赋值,这俩变量公用一块内存,一个改变,另一个也会改变,导致出现各种问题,正确赋值方法为 tumpList2 = list(anCitynames)
list方法会重新开辟一块内存,这样这两个变量就会互不干扰了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,417评论 11 349
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,426评论 0 6
  • 《花台临剑听秋雨》 楼台无弦惹轻缕, 倚剑临阁听秋雨。 花树提韵饰屏台, 余香赋写鸳鸯谱。 -----------...
    景黎阅读 253评论 2 3
  • 说到互联网变革对我们生活和工作产生的影响,日新月异的变化让很多从业人员无所适从,而这些也恰恰说明,只有跟得上时代的...
    优子room阅读 243评论 0 0
  • 允许表达-发自内心的轻松 在原生家庭中我是家中的第三个女儿,在那个计划生育已经开始的年代,父母顶着压力带着对男孩的...
    Icesheet阅读 159评论 0 0