为了账号安全,请及时绑定邮箱和手机立即绑定

python - 从元组中提取第一个元素

python - 从元组中提取第一个元素

慕雪6442864 2023-04-18 15:56:29
我有一个元组数组,并试图提取第一个元素,但它给出了一些随机输出。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.


查看完整回答
反对 回复 2023-04-18
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

每个元组的第一个元素很简单:

mapping[0]


查看完整回答
反对 回复 2023-04-18
?
莫回无

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)


查看完整回答
反对 回复 2023-04-18
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

你如何改变你的代码是这样的:


import operator


c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]

for mapping in c_details:

        print(mapping[0])


查看完整回答
反对 回复 2023-04-18
  • 4 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信