将函数的结果存储在列表python中

Posted

技术标签:

【中文标题】将函数的结果存储在列表python中【英文标题】:Store the result of a function in a list python 【发布时间】:2021-12-04 08:32:06 【问题描述】:

简介 我得到了一个解析守护进程套接字输出的函数。我用它来捕捉红外遥控器上按下的键。

def getKey():
    while True:
        data = sock.recv(128)
        data = data.strip()

        if (len(data) > 0):
            break

    words = data.split()
    return words[2], words[1]

key = getKey()
print(key)

问题 函数总是返回单个字符串对象

输出:

1
<class string>
2
<class string>
7
<class string>

问题 如何将所有这些字符串对象存储到单个列表对象中以供进一步使用?

像这样:

[1,2,7]
<class list>

【问题讨论】:

programiz.com/python-programming/methods/list/append list.append 不起作用,它总是重新运行一个包含单个对象的列表。我试过这个:def getKey(): while True: data = sock.recv(128) data = data.strip() if (len(data) &gt; 0): break words = data.split() return words[2], words[1] key = getKey() #print(key) key_log = [] key_log.append(key) 它不起作用,因为它返回:[1] &lt;class list&gt; [2] &lt;class list&gt; [7] &lt;class list&gt; 程序的写法,函数返回的是两个字符串的元组,不是字符串对象,所以看不懂你看到的输出。 【参考方案1】:
def getKey():
    while True:
        data = sock.recv(128)
        data = data.strip()

        if (len(data) > 0):
            break

    words = data.split()
    return words[2], words[1]

keys = []
keys.append(getKey())
keys.append(getKey())
keys.append(getKey())
print(keys)

【讨论】:

它似乎有效,但它仅在列表包含 3 个项目后打印对象,如下所示:Socket connection established! Ready... ['BTN_1', 'BTN_5', 'BTN_9'] ['BTN_8', 'BTN_7', 'BTN_5'] 随时打印,这只是一个例子

以上是关于将函数的结果存储在列表python中的主要内容,如果未能解决你的问题,请参考以下文章

Python:对于每个列表元素,在列表中应用一个函数

重复结果存储在Prolog的列表中

包装采用 char** [in/out] 的 C 函数调用,以在 cython 中返回 python 列表

Python函数将多个列表中的唯一值合并到一个列表中

在python中调用mysql存储过程并将结果写入csv文件

Python向函数传递列表