如何合并列表中的元素,如何比较列表中的2个元素

时间:2018-10-19 09:29:24

标签: python list

我是编程新手,有一个问题:

我有两个列表:

list = ["ich", "du", "etc", "."]
abbr = ["etc.", "U.S"]

我需要在第二个列表中使用给定缩写的列表来识别第一个列表中的缩写。 我需要遍历第一个列表的元素,如果该列表的元素和该列表的下一个元素一起包含在缩写列表中,则将它们合并以得到像这样的列表,

list = ["ich", "du", "etc."]

我的问题是如何将两者合并以及如何将元素加入下一个元素。如何在这里使用下一个元素而不是“。”

for elem in list:
if ''.join((elem, ".")) in abbr:

3 个答案:

答案 0 :(得分:3)

您可以将列表及其本身的序列压缩成一个索引,并在其末尾添加一个额外的空字符串,以便您可以成对浏览序列,并在缩写列表中找到它们时将其合并(这样更有效),因为下一个字符串已经被合并,所以跳过下一对:

lst = ["ich", "du", "etc", "."]
abbr = {"etc.", "U.S"}
pairs = zip(lst, lst[1:] + [''])
merged = []
for a, b in pairs:
    ab = a + b
    if ab in abbr:
        merged.append(ab)
        next(pairs, None)
    else:
        merged.append(a)
print(merged)

这将输出:

['ich', 'du', 'etc.']

请注意,如果您使用的是Python 2.7或更早版本,则可以使用添加的pairs函数来初始化iter

pairs = iter(zip(lst, lst[1:] + ['']))

答案 1 :(得分:1)

您可以这样:

for elem, nextelem in zip(list,list[1:]):

答案 2 :(得分:0)

您可以执行以下操作

lst = ["ich", "du", "etc", "."]
abbr = ["etc.", "U.S"]

for elem, nextelem in zip(lst[:-1],lst[1:]):
  if elem + nextelem in abbr:
    lst.remove(elem)
    lst.remove(nextelem)
    lst.append(elem + nextelem)

print(lst)

输出

['ich', 'du', 'etc.']