如何拆分嵌套列表元素的第一个元素?
How can I split the first element of a nested list element?
假设我们有:
test = [['word.II', 123, 234],
['word.IV', 321, 123],
['word.XX', 345, 345],
['word.XIV', 345, 432]
]
如何拆分测试中的第一个元素,以便结果为:
test = [['word', 'II', 123, 234],
['word', 'IV', 321, 123],
['word', 'XX', 345, 345],
['word', 'XIV', 345, 432]
]
我尝试过的其他方法包括:
test = [[row[0].split('.'), row[1], row[2]] for row in test],
但这会导致:
[['word', 'II'], 123, 234]
[['word', 'IV'], 321, 123]
[['word', 'XX'], 345, 345]
[['word', 'XIV'], 345, 432]
一种方法是使用 split
拆分第一个元素(就像您所做的那样!),然后使用 +
运算符将其连接到列表的其余部分:
result = [row[0].split('.') + row[1::] for row in test]
试试这个解决方案:
list(map(lambda x:x[0].split('.')+x[1:],test))
使用 extended iterable unpacking 和列表添加:
spam = [['word.II', 123, 234],
['word.IV', 321, 123],
['word.XX', 345, 345],
['word.XIV', 345, 432]]
eggs = [first.split('.') + rest for first, *rest in spam]
print(eggs)
输出:
[['word', 'II', 123, 234], ['word', 'IV', 321, 123],
['word', 'XX', 345, 345], ['word', 'XIV', 345, 432]]
这是一种方法:
new_test = [row[0].split('.')+ row[1:] for row in test]
+ 运算符连接列表,例如:
>>>[2,3,4] + [1,5]
[2, 3, 4, 1, 5]
这也有效:
test = [[row[0].split('.')[0], row[0].split('.')[1], row[1], row[2]] for row in test]
假设我们有:
test = [['word.II', 123, 234],
['word.IV', 321, 123],
['word.XX', 345, 345],
['word.XIV', 345, 432]
]
如何拆分测试中的第一个元素,以便结果为:
test = [['word', 'II', 123, 234],
['word', 'IV', 321, 123],
['word', 'XX', 345, 345],
['word', 'XIV', 345, 432]
]
我尝试过的其他方法包括:
test = [[row[0].split('.'), row[1], row[2]] for row in test],
但这会导致:
[['word', 'II'], 123, 234]
[['word', 'IV'], 321, 123]
[['word', 'XX'], 345, 345]
[['word', 'XIV'], 345, 432]
一种方法是使用 split
拆分第一个元素(就像您所做的那样!),然后使用 +
运算符将其连接到列表的其余部分:
result = [row[0].split('.') + row[1::] for row in test]
试试这个解决方案:
list(map(lambda x:x[0].split('.')+x[1:],test))
使用 extended iterable unpacking 和列表添加:
spam = [['word.II', 123, 234],
['word.IV', 321, 123],
['word.XX', 345, 345],
['word.XIV', 345, 432]]
eggs = [first.split('.') + rest for first, *rest in spam]
print(eggs)
输出:
[['word', 'II', 123, 234], ['word', 'IV', 321, 123],
['word', 'XX', 345, 345], ['word', 'XIV', 345, 432]]
这是一种方法:
new_test = [row[0].split('.')+ row[1:] for row in test]
+ 运算符连接列表,例如:
>>>[2,3,4] + [1,5]
[2, 3, 4, 1, 5]
这也有效:
test = [[row[0].split('.')[0], row[0].split('.')[1], row[1], row[2]] for row in test]