Python大量字符串组合相加处理优化

2010-04-21 10:13:41 by sand, 1684 visits, Tags: 数据类型, String, 性能优化, Python,

Python中字符串处理之前介绍过了,大家一般进行字符串组合是采取下面的模式:

相加:'ddd'+'sssss'结果为dddsssss

或者格式化:'dddd%s%s%d' % ('-','ss',5)结果为dddd-ss5

当遇到大量字符串组合而且可能数量不定的情况,这两种方式就都又点效率低了

下面介绍一种比较优化的处理方法,而且可以以一定的格式组合,使用的是字符串的join方法:

idlist=[]

for obj in objs:
    idlist.append(str(obj.id)) 
ids=','.join(idlist)

结果ids为1,2,3,等所有obj对象的id用,间隔的组合,如果不想有间隔,可以用''.join(idlist),前面代表间隔符,后面代表要组合的字符串列表

基本就是这样, 如果有问题可以留言或联系我,一定尽力解答

评论 (2)        

Python集合容器类型之List用法

2010-04-14 19:07:04 by sand, 1722 visits, Tags: 数据类型, 集合容器, Python,

熟悉编程的人都知道,除了基本数据类型,最常用的就要数集合容器了,Python中集合容器类型有4种,分别是List,tuple,set,dict,下面详细介绍一下其中List的用法

  1. 定义及初始化生成List对象
    testList = []
    或者
    testList = ['a','b','c']
     
  2. 从List中取出对象,类似其他开发语言中的数组用法用listname[index],代表从前开始取第index个对象(第一个从0开始记),不同的是多了一种用负数取对象listname[-index],代表从后开始取第index个对象(第一个从-1开始记)
    testList[0]取出为a
    testList[-1]取出为c
    其实负数取法可以换算为:t
     
  3. 从List中截取部分对象生成新List:listname[fromIndex:toIndex]代表取出索引从fromIndex到toIndex,但不包括toIndex的元素,这个也叫做List的分片
    testList[0:2]取出从0开始到第2个元素但不包括testList[2],所以结果就相当于取出了testList[0]和testList[1]组合成的新List
    结果为['a','b']
    ‘:’两边的值可以省略,前面省略代表0,后面省略代表List长度
    testList[0:2]相当于testList[:2]
     
  4. 向List添加对象有3种方法
    1)向List后面添加一个对象:listname.add(obj)
    例:
    testList = ['a','b','c']
    testList.add('d')
    结果testList为['a','b','c','d']
    2)向List中间指定索引位置插入一个对象:listname.insert(index,obj)
    例:
    testList = ['a','b','c']
    testList.insert(2,'d')
    结果testList为['a','b','d','c']
    3)向List中添加一个List中的多个对象,相当于两个List相加:listname.extend(listname2)
    例:
    testList = ['a','b','c']
    testList2 = ['d','e']
    testList.extend(testList2)
    结果testList为['a','b','d','c','d','e']
     
  5. 判断某个对象是否在List中:obj in listname
    例:
    testList = ['a','b','c']
    'a' in testList结果为True
     
  6. 在List中搜索对象:listname.index(obj)
    注:如果List中存在多个相同obj,则返回的是首次出现的索引,如果List中不存在该对象会抛出异常,所以查找对象之前一定要先判断一下对象是否在List中,以免引起程序崩溃
    例:
    testList = ['a','b','c']
    testList.index('a')结果为0
     
  7. 删除List中的对象:listname.remove(obj)
    注:如果List中存在多个相同obj,则删除的是首次出现的对象,如果List中不存在该对象则会抛出异常,所以在删除之前也要判断对象是否在List中
    例:
    testList = ['a','b','c','a']
    testList.remove('a')
    结果testList为['b','c','a']
     
  8. 对List进行运算
    1)相加:listname1 + listname2
    注:结果为新生成一个List,并没有修改之前的两个List
    例:['a','b'] + ['c','d']结果为['a','b','c','d']
    2)倍数:listname*n
    例:['a','b']*2结果为['a','b','a','b']

基本常用方法就这些,如有问题请留言或直接联系我,一定尽力解答!

评论 (2)