如何将元素列表分组到对中?

时间:2017-11-27 05:39:22

标签: python python-3.x

例如

l = [1, 2, 3, 4, 5, 6, 7, 8]

我如何得到它:

l = [12, 34, 56, 78]

4 个答案:

答案 0 :(得分:5)

使用zip,您可以将元素组合在一起。

>>> l = [1,2,3,4,5,6,7,8]
>>> temp = list(zip(l[::2],l[1::2]))
# [(1, 2), (3, 4), (5, 6), (7, 8)]

现在使用list comprehension组合它们。

>>> out = [a*10+b for a,b in temp]
>>> out
=> [12, 34, 56, 78]

答案 1 :(得分:2)

粗略的方法可能是,但在这里你去 -

l = [1,2,3,4,5,6,7,8]
[ int(str(l[a])+str(l[a+1])) for a in range(0,len(l),2) ]

1。 range(0,len(l),2) ]正在迭代所有其他元素

  1. l[a]l[a+1]正在转换为string,连接

  2. 输出结果已返回int

  3. 最后,整个逻辑是在单行中的列表理解中完成的。希望有所帮助!

答案 2 :(得分:0)

漂亮的现场答案,我的相似,但这里有。 这些单行中的任何一个都可以工作:

way1 = [first*10 + nxt for first, nxt in zip(l[::2], l[1::2])]
way2 = [int(str(first) + str(nxt)) for first, nxt in zip(l[::2], l[1::2])]

一般来说,你可以这样做:

general_way = [elems for elems in zip(l[::2], l[1::2])]
print(general_way)

[(1, 2), (3, 4), (5, 6), (7, 8)] # general_way

对于那些阅读和新的python:

  1. a_list[starting index: ending index: stepping] -
    所以l [:: 2]表示从索引0开始,结束包括索引-1,并从起始索引转到每个第2个元素。
  2. for elem1, elem2, ..., elemN in zip(iterable1, iterable2, ...., iterableN): -
    zip()接受多个iterables并从可比较的索引中选择一个值,并返回一个元组让步生成器。
  3. 建议使用zip()时所有迭代的长度相等。

答案 3 :(得分:0)

列表综合

>>> l = [1,2,3,4,5,6,7,8]
>>> x = [int(str(l[a])+str(l[a+1])) for a in range(0,len(l),2)]
>>> x
[12, 34, 56, 78]