我有以下代码:
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]
答案 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]
是其第一个元素。