将函数的结果存储在列表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) > 0): break words = data.split() return words[2], words[1] key = getKey() #print(key) key_log = [] key_log.append(key)
它不起作用,因为它返回:[1] <class list> [2] <class list> [7] <class list>
程序的写法,函数返回的是两个字符串的元组,不是字符串对象,所以看不懂你看到的输出。
【参考方案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中的主要内容,如果未能解决你的问题,请参考以下文章
包装采用 char** [in/out] 的 C 函数调用,以在 cython 中返回 python 列表