我有以下列表:
lst1=['ff','55','00' ,'90', '00' ,'92', '00' ,'ad' ,'00', 'c6', '00', 'b7', '00', '8d', '00' ,'98']
我想将列表中的每两个元素加在一起以获得新的简化
list2=[ff55, 0099, 0092, 00ad, 00c6,00b7,008d,0098]
任何想法写下来。
感谢
答案 0 :(得分:1)
lst1=['ff','55','00' ,'90', '00' ,'92', '00' ,'ad' ,'00', 'c6', '00', 'b7', '00', '8d', '00' ,'98']
lst2=[]
for i in range(len(lst1)/2):
lst2.append(lst1.pop(0)+lst1.pop(0))
print(lst2)
<强>输出:强> ['ff55','0090','0092','00ad','00c6','00b7','008d','0098']
答案 1 :(得分:1)
我是出于好奇而做到的,并且决定因为我已经花了我的时间,所以我会发布它。我仍然支持OP应该为此付出更多努力的观点,并且我已经投票决定关闭这个问题。
反正:
list(map(lambda x: x[0]+x[1], zip(a[::2], a[1::2])))
a[::2]
是list slicing syntax。 a[::2]
表示“从第一个开始每隔一个元素”,a[1::2]
表示“从第二个元素开始每隔一个元素”
zip
将两个序列压缩在一起:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6)]
map
将函数应用于可互换的
>>> a = [1,2,3]
>>> list(map(lambda x: x+1, a))
[2, 3, 4]
lambda
是python lambda notation。这是创建匿名函数的捷径。
答案 2 :(得分:0)
改进Yash的答案:
这是一个现场解决方案:
lst1=['ff 55 00 90 00 92 00 ad 00 c6 00 b7 00 8d 00 98']
for i in range(len(lst1)/2):
lst1.insert(i, lst1.pop(i)+lst1.pop(i))
print(lst1)
输出:[&#39; ff55&#39;,&#39; 0090&#39;,&#39; 0092&#39;,&#39; 00ad&#39;,&#39; 00c6&#39; ,&#39; 00b7&#39;,&#39; 008d&#39;,&#39; 0098&#39;]
这样就不需要第二个列表......当然这取决于你的应用程序