python 列表循环中的小问题

2017-03-29  本文已影响36人  Cocoa_Coder

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

#判断一个元素是否在列表中
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方法会重新开辟一块内存,这样这两个变量就会互不干扰了.

上一篇下一篇

猜你喜欢

热点阅读