我有一个元组数组,并尝试提取第一个元素,但是它给出了一些随机输出。
import operator
c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
for mapping in c_details:
source_name=map(operator.itemgetter(0), mapping)
print(source_name)
OUTPUT:
<map object at 0x01959358>
<map object at 0x01959148>
然后我尝试了这个。
source_name=list(map(operator.itemgetter(0), mapping))
output:
Traceback (most recent call last):
File "c:/Users/rbhuv/Desktop/code/bqshift.py", line 26, in <module>
source_name=list(map(operator.itemgetter(0), mapping))
TypeError: 'NoneType' object is not subscriptable
有人可以帮我解决这个问题吗? (其python 3.8)
答案 0 :(得分:2)
这不是给您一些随机输出,而是告诉您map(...)
返回一个generator。
您可以改用简单的列表理解:
c_details = [('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
lst = [tpl[0] for tpl in c_details]
print(lst)
哪个产量
['id', 'name']
请继续阅读有关生成器的内容(例如here),它们在Python
中非常强大且有用。
答案 1 :(得分:0)
每个元组的第一个元素就是:
mapping[0]
答案 2 :(得分:0)
如何更改这样的代码:
import operator
c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
for mapping in c_details:
print(mapping[0])
答案 3 :(得分:0)
只需将每个元素的值分配给新变量,分别将它们与元组分开,如下所示:
String