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

时间:2020-08-01 16:30:09

标签: python arrays list

我有一个元组数组,并尝试提取第一个元素,但是它给出了一些随机输出。

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)

4 个答案:

答案 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