设置类似功能

你好, 我有一个以新线结尾的空间划界字符串列表. 例如:a = ['a s sfds sdf s df 34 ew \ n','df sdf s f s s ssf \ n'] 现在,在每一行中,我有一个空间界定的字段列表. 现在我想比较数组的每一行中的字段,看看哪个 字段不匹配. 将其视为MN大小的2维数组,并比较每个 每个元素按列基于列. 我正在使用Python2.2,所以没有集合. 谁能想到一种有效的方法 去做这个? 谢谢, 哈里

# 回答1

2004年11月15日13:01:52 -0800,Hari Pulapaka 写道: 如果我正确理解问题,请将行分开并分类 在比较之前,它们比天真的方法好得多,尽管我 不知道那是最好的. - - mitja
# 回答2

hari pulapaka 写道: 您要比较相应的字段吗? 那是我唯一的方法 阅读"列列",因此我看不到什么设置可以 可能与它有关. 您想将每一行与其他行比较吗? 我也注意到 您的示例说,每行中的字段数似乎是 可变,那么您要如何处理"丢失"字段? 我猜太多未解决的问题. 但是对于某些指定的集 这些问题的答案,您可能会做...: def compare_fields(i,j,base等): 对于k,f1,f2中的zip(xrange(sys.maxint),base,其他): 如果F1!= F2: 打印" diff",i,j,k,reter(f1),reter(f2) def lots_of_compares(list_of_strings): list_of_lists_of_fields = [list_of_strings in list_of_strings in list_of_strings] num_rows = len(list_of_lists_of_fields) 对于i在Xrange(num_rows)中: base_row = list_of_lists_of_fields [i] 对于Xrange(i+1,num_rows)的j compare_fields(i,j,base_row,list_of_lists_of_fields [j]) 您可以用枚举,itertools和其他2.2的事物做得更好 没有,但套装无济于事. 现在,我希望这澄清 您的"规格"打开的许多未解决的问题,因此您可以工作 确切想要的东西. 顺便说一句:升级到2.4. 设置或没有集合,性能增强 本身将足以偿还任何不便 认为升级可能会导致. Alex
# 回答3

Alex Martelli写道:( _@_) hari pulapaka 写道: 集合没有订单,因此只是woudl无法按照您的说明方式工作. 行'a b'和'b a'看起来相同,因此"具有相同的 列位置"条件不会受到尊重. 您可能可以使用集合(therow.split()) - 但相交 这样的集合将是可疑的效用. 也许你的意思是对称 差异(工会减去十字路口),但即使如此,您仍然必须 为了调查该差异的哪一项来自 两行中的哪一个(假设您确实在乎 - 很难从这里分辨). 我相信Gadfly带有一个快速的C编码扩展名,称为Kjbuckets 这可能有助于这种事情(还有一个python编码 ' 后备',并不是那么快,但也很容易移植). 你可能想要 为了调查这一点,如果有机会,您有可能被C编码 安装在Python 2.2安装上的扩展名. Alex
# 回答4

mitja 写道:如果我正确理解问题,请在比较之前对其进行分类并对其进行排序,_is_比幼稚的方法好得多,尽管我不知道那是最好的. 分裂,当然. 排序将破坏"列列". Alex
# 回答5

在周二,2004年11月16日00:05:04 +0100,Alex Martelli 写道:如果我正确理解问题,在比较之前将行分解并对它们进行排序,_is_比幼稚的方法好得多,尽管我不知道这是最好的. 分裂,当然. 排序将破坏"列列". 我不确定OP真正想要什么; 我看到了"列列" 事物和关于集合的事物,这是矛盾的,所以我以为他是 之后类似于行为. [错误,正如后来的帖子澄清] - - mitja

标签: python

添加新评论