检索嵌套在另一个列表中的列表的第一个元素

时间:2016-01-13 20:00:46

标签: python

我有以下代码:

addresses = [['Jim', 543, 65], ['Jack', 4376, 23], ['Hank', 764, 43]]
print addresses[0:][0]  # I want this to return: ['Jim', 'Jack', 'Hank']`

如何仅打印addresses中的名称?

我用过这个:

for item in addresses:
    print item[0]

8 个答案:

答案 0 :(得分:3)

使用map的另一个解决方案:

print(list(map(lambda x: x[0], addresses)))
['Jim', 'Jack', 'Hank']

或者您可以使用operator.itemgetter(0)作为评论中建议的@Kupiakos:

from operator import itemgetter(0)
print(list(map(itemgetter(0), addresses)))
['Jim', 'Jack', 'Hank']

<强>时序

In [648]: %timeit list(map(operator.itemgetter(0), addresses))
1000000 loops, best of 3: 1.16 µs per loop

In [649]: %timeit list(map(lambda x: x[0], addresses))
1000000 loops, best of 3: 1.25 µs per loop

答案 1 :(得分:2)

from operator import itemgetter
print(map(itemgetter(0), addresses))

这将从addresses中的每个元素中选择第一个项目,并从中创建一个新列表。 itemgetter(0)比lambda快。

答案 2 :(得分:2)

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
    applicationId "com.example.kiwakosan.testing"
    minSdkVersion 17
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile project(':lib')
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-ads:8.3.0'
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
compile 'com.mcxiaoke.volley:library:1.0.19'
//compile 'com.mcxiaoke.volley:library-aar:1.0.1'
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
compile 'me.dm7.barcodescanner:zbar:1.8.3'
compile 'com.android.support:support-v4:23.1.1'
compile 'de.hdodenhof:circleimageview:1.2.1'
compile 'com.paypal.sdk:paypal-android-sdk:2.12.5' //recently added 
}

还可以再向戒指投掷一个:P

答案 3 :(得分:0)

print([x[0] for x in addresses])

答案 4 :(得分:0)

最简单的方法是使用list comprehension

names = [a[0] for a in addresses]

答案 5 :(得分:0)

您可以使用list comprehension从地址列表中的每个列表中获取第一项(item[0])。然后你就打印出来。来自REPL:

>>> addresses = [['Jim', 543, 65], ['Jack', 4376, 23], ['Hank', 764, 43]]
>>> [item[0] for item in addresses]
['Jim', 'Jack', 'Hank']
>>> for name in [item[0] for item in addresses]:
...     print(name) 
... 
Jim
Jack
Hank

Python&#39; s print可让您将其简写为:

print([item[0] for item in addresses])

答案 6 :(得分:0)

您可以使用list comprehension

>>> names = [sublist[0] for sublist in addresses]
>>> names
['Jim', 'Jack', 'Hank']

答案 7 :(得分:0)

你想要这个:

print [a[0] for a in addresses]

此处a是一个子数组,a[0]是其第一个元素。