Python 如何删除第一个和最后一个元素的第一个和最后一个值,该元素由(.)分隔,需要连接列表中的其他元素
我有这样一个python列表Python 如何删除第一个和最后一个元素的第一个和最后一个值,该元素由(.)分隔,需要连接列表中的其他元素,python,list,split,Python,List,Split,我有这样一个python列表 ['6403687.6403773','6404555.6404614','6413270.6413335'] 在本例中,我需要删除第一个元素6403687的第一个值和最后一个元素6413335的最后一个值,并需要像这样连接另一个元素['6403773.6404555','6404614.6413270'。像这样,我有几个n个值的列表。我不知道怎么做。如果有人请帮助我 list = ['6403687.6403773','6404555.6404614','641
['6403687.6403773','6404555.6404614','6413270.6413335']
在本例中,我需要删除第一个元素6403687的第一个值和最后一个元素6413335的最后一个值,并需要像这样连接另一个元素['6403773.6404555','6404614.6413270'。像这样,我有几个n个值的列表。我不知道怎么做。如果有人请帮助我
list = ['6403687.6403773','6404555.6404614','6413270.6413335']
删除第一个和最后一个值后,我需要这样的列表
list1 = ['6403773.6404555','6404614.6413270']
好的,一种方法是:
from itertools import islice
lst = ['6403687.6403773','6404555.6404614','6413270.6413335']
# split at ".", flatten and remove both ends (slice)
flat = [num for pair in lst for num in pair.split('.')][1:-1]
# pair the entries in 2s and join them
res = ['.'.join(islice(flat, 2)) for _ in range(len(flat)//2) ]
产生:
print(res) # -> ['6403773.6404555', '6403773.6404555']
或者,如果您不喜欢islice的最后一步,我也不是一个超级粉丝,您可以使用石斑鱼itertool:
而是去做
res = ['.'.join(group) for group in grouper(flat, 2)]
当然也有相同的结果。假设您的列表总是有3个计数,因为您没有给出任何关于它是动态的信息:
startList = ['6403687.6403773','6404555.6404614','6413270.6413335']
newList = []
newList.append(startList[0].split('.')[1] + '.' + startList[1].split('.')[0])
# split first value and take second half and concat with the middle value's first half
newList.append(startList[1].split('.')[1] + '.' + startList[2].split('.')[0])
# split last value and take first half and concat with the middle value's second half
输出:
['6403773.6404555','6404614.6413270']
['6403773.6404555', '6404614.6413270']
#Result: ['6403773.6404555', '6404614.6413270']
此方法将一步一步地完成,并且也适用于列表或任意长度:
number_strings = ['6403687.6403773','6404555.6404614','6413270.6413335']
# remove first part of element
number_strings[0] = number_strings[0].split('.')[1]
# remove last part of last element
number_strings[-1] = number_strings[-1].split('.')[0]
# remove points
number_strings_rearranged = []
for element in number_strings:
for part_string in element.split('.'):
number_strings_rearranged.append(part_string)
# restructure with points
number_strings = [number_strings_rearranged[i]+'.'+number_strings_rearranged[i+1] for i in range(0, len(number_strings_rearranged)-1, 2)]
print(number_strings)
输出:
['6403773.6404555','6404614.6413270']
['6403773.6404555', '6404614.6413270']
#Result: ['6403773.6404555', '6404614.6413270']
虽然很多人都回答了这个问题,但我想通过使用一个简单的for循环,为一个长列表提供一种不同且简单的方法。
输出:
['6403773.6404555','6404614.6413270']
['6403773.6404555', '6404614.6413270']
#Result: ['6403773.6404555', '6404614.6413270']
我希望这有助于:您是否至少尝试过一种简单的for-loop方法?标题中预期的解决方案与问题中描述的过程不匹配。请把这个修好。更好的是,找到一个更具描述性的标题,因为现在它相当混乱。你知道如何拆分某个字符上的字符串吗?您知道如何以大于1的步骤迭代列表吗?你知道如何连接两条线吗?你知道如何建立一个新的列表吗?您将需要所有这些步骤,但您可能已经可以完成大部分步骤,那么您坚持哪一个步骤?你能展示你解决这个问题的方法吗?是的,列表的第一个和最后一个元素,不管它有多大,我删除了我的评论,因为在更仔细地阅读了你想要的输出后,我意识到这不是我所想的。您将获取每个元素的第二部分,并将其与下一个元素的第一部分相结合,而不是获取列表中的第一个元素和最后一个元素this@Aishwarya在这种情况下,最后的值添加到哪里?请把它添加到你的问题中,这样问题就清楚了。@Aishwarya:我下面的回答为你提供了一个任意长度n的解决方案。还不错!但是,您应该在末尾添加一个“bb=bb[1:]”,以将正确的输出保存到“bb”。谢谢@mrCarnivore你是对的,对于独立代码来说,把它重新分配给bb是很好的。然而,我想把它留在bb[1:],因为它是不言自明的,艾什瓦娅可以随心所欲地使用它。