以这种方式从列表中提取数据
line[0:3], line[3][:2], line[3][2:]
我收到一个数组和两个变量,应该是预期的:
(['a', 'b', 'c'], 'd', 'e')
我需要操纵列表,以便最终结果是
('a', 'b', 'c', 'd', 'e')
如何?谢谢。
P.S。是的,我知道我可以将第一个元素写为line[0], line[1], line[2]
,但我认为这是一个非常尴尬的解决方案。
答案 0 :(得分:4)
from itertools import chain
print tuple(chain(['a', 'b', 'c'], 'd', 'e'))
输出:
('a', 'b', 'c', 'd','e')
答案 1 :(得分:1)
试试这个。
line = ['a', 'b', 'c', 'de']
tuple(line[0:3] + [line[3][:1]] + [line[3][1:]])
('a', 'b', 'c', 'd', 'e')
注意: 我认为你的切片逻辑中有一些有趣的事情。 如果[2:]返回任何字符,[:2]必须返回2个字符。 请提供您的输入行。
答案 2 :(得分:1)
明显的答案:而不是你的第一行,做:
line[0:3] + [line[3][:2], line[3][2:]]
这假设line[0:3]
是一个列表。否则,您可能需要进行一些小的调整。
答案 3 :(得分:0)
此功能
def merge(seq):
merged = []
for s in seq:
for x in s:
merged.append(x)
return merged
答案 4 :(得分:0)
def is_iterable(i):
return hasattr(i,'__iter__')
def iterative_flatten(List):
for item in List:
if is_iterable(item):
for sub_item in iterative_flatten(item):
yield sub_item
else:
yield item
def flatten_iterable(to_flatten):
return tuple(iterative_flatten(to_flatten))
这适用于任何嵌套级别