Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 如何将元素添加到“for”循环内的列表中?_Python_Python 3.x_List - Fatal编程技术网

Python 如何将元素添加到“for”循环内的列表中?

Python 如何将元素添加到“for”循环内的列表中?,python,python-3.x,list,Python,Python 3.x,List,这里有一个严重的大脑放屁时刻,因为我可以发誓这个代码以前工作正常 鉴于以下情况: data = response.json() for result in data['results']: for field in result['custom_fields']: if field['id'] == some_id_field: print(field['value']) 返回: 11111 22222 33333 44444 55555 666

这里有一个严重的大脑放屁时刻,因为我可以发誓这个代码以前工作正常

鉴于以下情况:

data = response.json()
for result in data['results']:
    for field in result['custom_fields']:
        if field['id'] == some_id_field:
            print(field['value'])
返回:

11111
22222
33333
44444
55555
66666
77777
但是,我想将输出作为列表存储在单独的变量中,以便稍后使用,所以我这样做了:

data = response.json()
for result in data['results']:
    for field in result['custom_fields']:
        if field['id'] == some_id_field:
            var_for_later = field['value']
            var_for_later = var_for_later.splitlines()
            var_for_later = var_for_later
但是,它只返回数组中的第一个元素

11111
而不是['11111','22222','33333','44444','55555','66666','77777']

我可以发誓上面的代码曾经是输出,直到我想测试一些东西,今天再次运行代码,看到它只返回一个值


为什么字段['value']现在只存储分配给变量时的第一个元素?

您将值分配给变量,而不是将其附加到列表中。为了在列表中存储值,您需要更新代码,在for循环之前创建一个空列表,并使用list.append方法将字段['value']追加到列表中。因此,您的代码将成为:

data = response.json()

my_list = []  # creating empty list
for result in data['results']:
    for field in result['custom_fields']:
        if field['id'] == some_id_field:
            my_list.append(field['value'])  # Appending items to the list
它将以所需格式返回my_list as list,如下所示:

[11111, 22222, 33333, 44444, 55555, 66666, 77777]
试试这个:

yourdata=[] data=response.json 对于数据中的结果['results']: 对于结果中的字段['custom_fields']: 如果字段['id']==某个\u id\u字段: yourdata.appendfield['value'] 打印您的数据 我猜您对Python还很陌生,所以我建议您观看一些教程或在internet上搜索文档。例如

为什么你的代码不起作用? 看看这行代码:var\u for\u later=var\u for\u later它完全不起作用。此外,在每个迭代的后面,您将覆盖var_。因此,从技术上讲,它最终应该返回“77777”,而不是“11111”

您确定这是与此代码对应的输出吗


顺便说一句,您真的有多个具有相同id的入口吗?

之前您一次打印一个字段,但随后开始在每个循环中替换相同的变量,这就是为什么它只有一个值。var_for_later仅存在于该for循环中。而不是在循环外创建最终列表,并在每次迭代中附加值

out = []
data = response.json()
for result in data['results']:
    for field in result['custom_fields']:
        if field['id'] == some_id_field:
            out.append(field['value'])

var_for_later=field['value']var_for_later=var_for_later.splitlines var_for_later=var_for_later这里发生了什么?您正在将新值存储到var_以备以后使用。您是否正在寻找var_for_later=[]var_for_later.appendtil。也谢谢你@Rafael: