我有一个名为arr
的数组数组,我想分割每个数组的第二个值。这意味着,如果我0-6
我想将其修改为'0','6'
我有什么:
arr = [['PROVEEDOR', '0-6', '11111'], ['tiempo ida pulidor', '6-14', '33333']]
我想拥有什么:
arr = [['PROVEEDOR', '0', '6', '11111'], ['tiempo ida pulidor', '6', '14', '33333']]
我该如何进行此转换?它始终是第二个值,并且总是有两个数字。我知道我要使用.split('-')
,但我知道不知道如何让它替换,因为我要在arr
中包含的所有数组之间进行迭代。
提前致谢。
答案 0 :(得分:12)
如果你想在现场进行:
In [83]: arr = [['PROVEEDOR', '0-6', '11111'], ['tiempo ida pulidor', '6-14', '33333']]
In [84]: for i in arr:
...: i[1:2]=i[1].split('-')
In [85]: arr
Out[85]: [['PROVEEDOR', '0', '6', '11111'], ['tiempo ida pulidor', '6', '14', '33333']]
答案 1 :(得分:2)
试试这个
arr = [['PROVEEDOR', '0-6', '11111'], ['tiempo ida pulidor', '6-14', '33333']]
new_arr = []
for x in arr:
new_val = [x[0]]
new_val.extend(x[1].split('-'))
new_val.append(x[2])
new_arr.append(new_val)
print new_arr
答案 2 :(得分:2)
试试这个:
def splitfirst(a):
a[1:2] = a[1].split('-')
return a
newarr = [splitfirst(a) for a in arr]
发生了什么事?好吧,您可以分配给切片,用新序列替换列表中的那部分。这就是行
a[1:2] = [1, 2, 3, ...]
一样。它将切片1:2
(索引为1
的元素,但不包括索引为2
的元素)替换为新序列 - 在这种情况下我们拆分的结果。
由于此解决方案依赖于分配给切片(这是一个语句),因此如果没有单独的函数,我们就无法做到这一点。等待。我要去看看能不能找到的东西......
编辑:为那些喜欢的人提供在线资讯:
[a.__setslice__(1, 2, a[1].split('-')) or a for a in arr]
这里发生了什么?嗯......实际上和以前完全一样,但是使用魔术方法__setslice__
而不是切片赋值的语法糖。我使用表达式的or a
部分来生成arr
元素,因为__setslice__
会返回None
。
答案 3 :(得分:1)
for a in arr:
elems = a.pop(1).split('-')
a.insert(1, elems[0])
a.insert(2, elems[1])
答案 4 :(得分:0)
不更改原始数组(带副本):
result = [[ar[0]] + ar[1].split('-') + ar[2:] for ar in arr]
就地解决方案:
for ar in arr:
x,y = ar[1].split('-')
ar[1] = x
ar.insert(2, y)