我有一个包含以下内容的列表:
x = ['1', '2/keys', '3']
现在必须将“ 2 /键”分开。我认为应该可以在列表中创建一个列表?
但是在拆分之前,我必须检查一下是否存在“ /
”。
下面的代码,显然是行不通的,是我得到的:
for numbers in x:
if '/' in x:
x[numbers].split('/')
是否可能会有类似的结果?
x = ['1', ['2', 'keys'], '3']
答案 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