Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除第一个和最后一个元素的第一个和最后一个值,该元素由(.)分隔,需要连接列表中的其他元素_Python_List_Split - Fatal编程技术网

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

我有这样一个python列表

['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:],因为它是不言自明的,艾什瓦娅可以随心所欲地使用它。