例如
l = [1, 2, 3, 4, 5, 6, 7, 8]
我如何得到它:
l = [12, 34, 56, 78]
答案 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) ]
正在迭代所有其他元素
l[a]
和l[a+1]
正在转换为string
,连接
输出结果已返回int
最后,整个逻辑是在单行中的列表理解中完成的。希望有所帮助!
答案 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:
a_list[starting index: ending index: stepping]
- for elem1, elem2, ..., elemN in zip(iterable1, iterable2, ...., iterableN):
- 建议使用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]