Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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_Slice - Fatal编程技术网

如何在给定字符串的每次出现时分割Python数组?

如何在给定字符串的每次出现时分割Python数组?,python,slice,Python,Slice,我正在用Python3.7编写一段代码,其中我需要将数组分块 该数组类似于以下数组: ['1.60500002','1.61500001','1.625','1.63499999','NO',', ‘1.73500001’、‘1.745’、‘否’、‘2.04500008’、‘2.05499983’] 每次出现字符串'NO'时,我都有兴趣创建n个不同的片段(本例中为3个)。然后,输出数组应该类似于: ['1.60500002','1.61500001','1.625','1.63499999']

我正在用Python3.7编写一段代码,其中我需要将数组分块

该数组类似于以下数组:

['1.60500002','1.61500001','1.625','1.63499999','NO',',
‘1.73500001’、‘1.745’、‘否’、‘2.04500008’、‘2.05499983’]
每次出现字符串
'NO'
时,我都有兴趣创建n个不同的片段(本例中为3个)。然后,输出数组应该类似于:

['1.60500002','1.61500001','1.625','1.63499999'],
['1.73500001', '1.745'],
['2.04500008', '2.05499983']]

有人能帮我吗

您可以尝试遍历列表,检查元素是否为浮点数,如果是,则将其添加到列表中,如果不创建新列表。只要把你列出的所有清单加起来就可以了

def split_str(inp):
    array_of_array = []
    arr = []
    for a in inp:
        try:
            float(a)
            arr.append(a)
        except Exception:
            array_of_array.append(arr)
            arr = []
    array_of_array.append(arr)
    return array_of_array

循环数组,如果元素为“否”,我们将数组拆分为“否”元素,并将其添加到输出中。如果我们到达终点,最后一部分将是从最后一个“否”到终点

my_array = ['1.60500002', '1.61500001', '1.625', '1.63499999','NO','1.73500001', '1.745', 'NO','2.04500008', '2.05499983']
    output = []
    counter = 0
    start = 0
    for item in my_array:
        if item == "NO":
            output.append(my_array[start:counter])
            start = counter + 1
        if counter == len(my_array) - 1:
            output.append(my_array[start:counter + 1])
        counter += 1

因为唯一的分割指示器是“否”,所以这应该更容易。你所要做的就是检查“否”,然后创建一个新列表。您还必须处理第一个元素场景,因为它可以是“否”或数字,但如果它是“否”,则不需要创建新列表

要在列表中创建新列表,可以执行
examplelist.append([])

然后,要访问列表中的特定列表,可以在使用append()之前在方括号中提及列表编号。例如,
examplelist[列表编号]。追加(任何内容)

下面是我想出的代码:

#输入
数组=['1.60500002','1.61500001','1.625','1.63499999','NO','1.73500001','1.745','NO','2.04500008','2.05499983']
#宣布
结果=[]#空列表
list_number=0#访问列表中的特定列表
starting_element=True#var处理启动场景
对于数组中的元素:
#起始情景
如果启动_元素:
结果。追加([]))
如果元素!='否:
结果[列表\编号]。追加(元素)
起始元素=False
#不可能
elif元素==“否”:
列表编号+=1
结果。追加([]))
#数字场景
elif元素!='否:
结果[列表\编号]。追加(元素)
打印(结果)

请分享您到目前为止所做的尝试以及遇到的困难。您可以使用itertools groupby,尝试以下答案,将“.”替换为“否”:此外,您还可以使用列表理解,使用
[i.strip().split(“”)for i in“”。加入(_list)。如果len(i)>0,则拆分(“”)
这是否回答了您的问题?循环数组,如果元素为“否”,我们将数组拆分为“否”元素,并将其添加到输出中。如果我们到了结尾,最后一部分将从最后一个“否”一直到结尾。请编辑您的问题并在答案中进行解释。谢谢