在python中组合两个不等长度列表中的字符

时间:2015-07-03 13:38:20

标签: python list loops

我有2个不同长度的列表,一个数字和一个字符:

var name = reader["name"];
var isNamePresent = grid.Items
    .Cast<Teams.Club_Information>()
    .Any(item => item.name == name);

if (isNamePresent) ... else ...

我如何遍历这些以便得到结果x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] y = ['A','B','C','D','E','Z','A','B','C','D','E','Z','A','B','C','D','E','F','Z','A','B','C','D','E','Z','A','B','C','D','E','Z','A','B','C','D','E','Z','A','B','C','D','E','A','B','C','D','A','B','C','Z','A','B','C','A','B','C','A','B','C','Z','A','B','C','A','B','C','A','B','C','A','B','C','A','B'] 等(取决于列表中的数字/字符)?

编辑正如我在下面的评论中指出的那样,字符列表不会重复相同的值集,更清晰的例子:

如果我有1A,1B,1C,1D,1E,1Z,2Ax = [1,2,3],我会寻找答案y=['A','B','C','A','B','A','B','C']

3 个答案:

答案 0 :(得分:2)

根据您更新的示例,我认为您想要的是:

  1. 从第一个列表中的第一个数字开始;
  2. 迭代第二个列表并创建对;
  3. 直到您再次从第二个列表中找到第一个项目;
  4. 然后从第一个列表中取出下一个数字并从2继续。
  5. 在此基础上,您可以使用:

    def combine(list1, list2):
        list1 = iter(list1)
        for item2 in list2:
            if item2 == list2[0]:
                item1 = next(list1)
            yield ''.join(map(str, (item1, item2)))
    

    使用中:

    >>> list(combine([1, 2, 3], ['A', 'B', 'C', 'A', 'B', 'A', 'B', 'C']))
    ['1A', '1B', '1C', '2A', '2B', '3A', '3B', '3C']
    

答案 1 :(得分:0)

p in [0;1[

也许你应该试试这个

答案 2 :(得分:-1)

由于一个列表比另一个列表大,我不知道您是否想要按照最小列表大小限制新列表大小:x,并放弃y上的所有额外值。如果你想这样做,你可以试试:

z = []
for i in range(len(x)):
    z.append(str(x[i]) + y[i])
print (z);

你需要将明确的转换用于字符串str(),因为你的第一个列表是整数。

如果您想扩展第一个列表,那么生成的结果为1A 1B 1C 1D 1E...,您可以这样做:

z = [''.join(str(a) + b) for a in x for b in y]