我想采取一个列表输入(可以有各种长度),并创建新的名单加入每个潜在的连续对。你知道吗
例如:
mylist = ['07', '05', '66', '06755', '04']
将返回如下:
['0705', '66', '06755', '04']
['07', '0566', '06755', '04']
['07', '05', '6606755', '04']
['07', '05', '66', '0675504']
我已经写了下面的代码,但我希望有一个更好的方法,因为我担心切片可能会遇到问题。你知道吗
def joinConsecutive(nums):
parts = len(nums)
newNums = []
# Join 1st and 2nd parts
merge1 = [''.join(nums[0:2])] + nums[2:]
newNums.append(merge1)
# Join 2nd and 3rd parts, etc.
i = 1
while i <= parts - 2:
start = nums[0:i]
mid = [''.join(nums[i:i+2])]
# When joining 2nd-to-last and last parts, this end just gets ignored
end = nums[i+2:]
newNums.append(start + mid + end)
i += 1
return newNums
joinConsecutive(mylist)
[['0705', '66', '06755', '04'],
['07', '0566', '06755', '04'],
['07', '05', '6606755', '04'],
['07', '05', '66', '0675504']]
我认为您的方法很好(切片从不产生
IndexError
,而是返回空列表)。你知道吗但是,可以通过使用try/except和enumerate提高可读性:
使用一些索引数学和嵌套列表:
不要担心“切片问题”,因为Python会自动为您处理超出范围的切片索引(通过返回空列表)。你知道吗
相关问题 更多 >
编程相关推荐