2017-06-04 22 views
3

所以,如果我有一个这样的名单:如何更改列表中的项目分组?

x = [0,1,2,3,4,5,6,7,8,9] 

如何转换这个名单弄成这个样子:

x = [01,23,45,67,89] 

我怎么能这样做?

我知道内置的zip功能, 但我不想tuple,我想2号分为1

+1

已修改'x'列表包含'str'对象或'int's? –

+2

01在Python中不是一个有效的整数表示...你的意思是组合整数的函数应该返回字符串吗?或者你的输入实际上是以字符串开始的? – THK

回答

3

你可以试试这个:

x = [0,1,2,3,4,5,6,7,8,9] 

x = map(str, x) 

new_list = map(int, [x[i]+x[i+1] for i in range(0, len(x)-1, 2)]) 
+0

非常感谢!我不知道那个伎俩。 – Ajax1234

+0

感谢您的快速回复!我会尝试! –

+0

请注意,在python 3中'map'返回的是一个生成器对象而不是一个列表,所以你必须对'in ='x = list(map(str,x))'或'x = [str(i) X]'。 –

2

使用拉链,列表推导,假设数据类型是从整列表到字符串列表:

In [1]: x = [0,1,2,3,4,5,6,7,8,9] 

In [2]: pairs = zip(x[::2], x[1::2]) 

In [3]: pairs 
Out[3]: [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)] 

In [4]: [str(fst) + str(snd) for fst, snd in pairs] 
Out[4]: ['01', '23', '45', '67', '89'] 
1

这更容易理解nd是一行代码:

# l = list of string of items in list u with index(i) and index(i+1) and i increments by 2 
l = [ str(u[i]) + str(u[i+1]) for i in range(0, len(u), 2)] 
+0

考虑到guido想摆脱地图和功能被映射到列表没什么大这可能是更好的答案,并可能更快 – citizen2077