Python从列表列表中打印第n个元素

时间:2017-04-06 09:37:57

标签: python list

我有以下列表:

[[50.954818803035948, 55.49664787231189, 8007927.0, 0.0], 
[50.630482185654436, 55.133473852776916, 8547795.0, 0.0],
[51.32738085400576, 55.118344981379266, 6600841.0, 0.0], 
[49.425931642638567, 55.312890225131163, 7400096.0, 0.0], 
[48.593467836476407, 55.073137270550006, 6001334.0, 0.0]]

我想打印每个列表中的第三个元素。期望的结果是:

8007927.0
8547795.0
6600841.0
7400096.0
6001334.0

我试过了:

print data[:][2]

但它没有输出所需的结果。

5 个答案:

答案 0 :(得分:4)

很多方法都可以做到这一点。这是一种简单的列表方式,没有明确的for循环。

tt = [[50.954818803035948, 55.49664787231189, 8007927.0, 0.0], [50.630482185654436, 55.133473852776916, 8547795.0, 0.0], [51.32738085400576, 55.118344981379266, 6600841.0, 0.0], [49.425931642638567, 55.312890225131163, 7400096.0, 0.0], [48.593467836476407, 55.073137270550006, 6001334.0, 0.0]]

print [x[2] for x in tt]

> [8007927.0, 8547795.0, 6600841.0, 7400096.0, 6001334.0]

对于潜在的短名单而言,制作是安全的

print [x[2] for x in tt if len(tt) > 3]

更复杂的输出(python 2.7),将值打印为换行符(\ n)

print '\n'.join([str(x[2]) for x in tt])

> 8007927.0
> 8547795.0
> 6600841.0
> 7400096.0
> 6001334.0

答案 1 :(得分:3)

试试这个:

for item in data:
    if len(item) >= 3: # to prevent list out of bound exception.
        print(int(item[2]))

答案 2 :(得分:3)

public void VisitStatusInsertorUpdate(VisitStatusModel modlobj) { String query = " SELECT * FROM " + VisitStatusModel.table + " WHERE " + VisitStatusModel.statusid + " =" + modlobj.getStatusID() + ""; Cursor c = db.rawQuery(query, null); if (c.moveToFirst()) { VisitStatusUpdate(modlobj); } else { InsertVisit_Status(modlobj); } c.close(); } private void VisitStatusUpdate(VisitStatusModel modlobj) { ContentValues contentValues = new ContentValues(); String[] args = {String.valueOf(modlobj.getStatusID())}; contentValues.put(VisitStatusModel.status,modlobj.getStatus()); contentValues.put(VisitStatusModel.statusid,modlobj.getStatusID()); db.update(VisitStatusModel.table, contentValues, VisitStatusModel.statusid + "= ?", args); } private void InsertVisit_Status(VisitStatusModel visitStatusModel) { ContentValues contentValues = new ContentValues(); contentValues.put(VisitStatusModel.status, visitStatusModel.getStatus()); contentValues.put(VisitStatusModel.statusid, visitStatusModel.getStatusID()); mcontext.getContentResolver().notifyChange(VisitDAO_URI, null); db.insert(VisitStatusModel.table, null, contentValues); } map已经提供,我想提供两种方式,比如说list comprehensive是您的清单:

使用d

zip

使用zip(*d)[2]

numpy

答案 3 :(得分:2)

也许你尝试了一个地图功能 在python 3中:

 list(map(lambda l: l[2], z))

在python 2中:

map(lambda l: l[2], z)

答案 4 :(得分:2)

为了从列表列表中打印每个列表的n元素,您需要首先访问每个列表,然后访问该列表中的n元素。

在实践中,它看起来像这样

def print_nth_element(listset, n):
   for listitem in listset:
      print(int(listitem[n])) # Since you want them to be ints

然后可以以print_nth_element(data, 2)的形式为您的案例调用。

你的data[:][2]没有产生正确结果的原因是因为data[:]按原样返回整个列表列表,然后执行获取同一列表的第3个元素就是获得第一个元素原始清单。因此data[:][2]实际上等同于data[2]