在Python列表中/内部拆分

时间:2019-05-13 13:26:43

标签: python

我有一个包含以下内容的列表:

x = ['1', '2/keys', '3']

现在必须将“ 2 /键”分开。我认为应该可以在列表中创建一个列表? 但是在拆分之前,我必须检查一下是否存在“ /”。

下面的代码,显然是行不通的,是我得到的:

for numbers in x:
            if '/' in x:
                x[numbers].split('/')

是否可能会有类似的结果?

x = ['1', ['2', 'keys'], '3']

4 个答案:

答案 0 :(得分:6)

您非常亲密。

x = ['1', '2/keys', '3']
for ind, numbers in enumerate(x):
    if '/' in numbers:
        x[ind] = numbers.split('/')
print(x)

或者列表理解

例如:

x = [numbers.split('/') if '/' in numbers else numbers for numbers in x]

答案 1 :(得分:2)

您真的很亲密,这是一种通过列表理解做到这一点的好方法:

x = ['1', '2/keys', '3']
x = [elem.split('/') if '/' in elem else elem for elem in x ]
print(x)
  

输出:

['1', ['2', 'keys'], '3']

答案 2 :(得分:0)

当然,这是可能的解决方案:

x = ['1', '2/keys', '3']
for i in range(len(x)):
    if '/' in x[i]:
        x[i] = x[i].split('/')
print(x)

它将是输出:

  

['1',['2','键'],'3']

答案 3 :(得分:0)

另一种解决方案是使用map

x = ['1', '2/keys', '3']
x = list(map(lambda x: x.split("/") if "/" in x else x, x))

结果

['1', ['2', 'keys'], '3']

对于一线客来说还不错:)

编辑: @Rakesh解决方案更快:

$ python3 -m timeit "x = ['1', '2/keys', '3'];x=list(map(lambda x: x.split('/') if '/' in x else x, x))"
1000000 loops, best of 3: 0.826 usec per loop
$ python3 -m timeit "x = ['1', '2/keys', '3'];x=[numbers.split('/') if '/' in numbers else numbers for numbers in x]"
1000000 loops, best of 3: 0.454 usec per loop