我有一个元组数组,并试图提取第一个元素,但它给出了一些随机输出。import operatorc_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有人可以帮我解决这个问题吗?(它的蟒蛇3.8)
4 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
它不会给你一些随机输出,而是告诉你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']
请继续阅读有关生成器的内容(例如此处),它们在Python.
莫回无
TA贡献1865条经验 获得超7个赞
只需将元组中的每个元素分别赋值给新变量,如下所示:
c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
for entry in c_details:
ele1, ele2, ele3, ele4, ele5 = entry
print(ele1)
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
你如何改变你的代码是这样的:
import operator
c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
for mapping in c_details:
print(mapping[0])
添加回答
举报
0/150
提交
取消