簡體   English   中英

Python,如何從列表中的列表中打印特定項目?

[英]Python, how to print specific items from lists in lists?

我正在嘗試打印列表num_list中所有列表的第一項和最后一項。

num_list = [[1,2,3],[10,20,30],[100,200,300]]

for x in range(0,3):
    for y in range(0,1) and range(2,3):
        print(num_list[x][y])

但這只是打印3,30,300並跳過1,10100

解決這個問題的好方法是什么?

使用索引。

前任:

num_list = [[1,2,3],[10,20,30],[100,200,300]]

for i in num_list:
    print(i[0], i[-1])   #i[-1] == negative indexing. 

輸出:

1 3
10 30
100 300

您不需要使用范圍來完成您的任務。
無論如何,即使您願意,您的代碼中也存在錯誤

range(0,1) and range(2,3)

根據定義and返回第一個值為 False 的值,否則返回表達式中的最后一個值。
因此,在您的情況下,它只返回range(2,3)

的確,

range(0,1) and range(2,3)

返回

range(2, 3)

因為bool(range(0,1))bool(range(2,3))都被評估為 True。
這就是為什么它們都是非空序列的原因。 實際上bool(range(2,2))將被評估為False為空。 有關更多詳細信息,請參閱文檔

你應該寫一些類似的東西

import itertools

num_list = [[1,2,3],[10,20,30],[100,200,300]]

for x in range(0,3):
    for y in itertools.chain(range(0,1), range(2,3)):
        print(num_list[x][y])

使用itertools.chain

可能是最小的解決方案:

num_list = [[1,2,3],[10,20,30],[100,200,300]]
for x in num_list:
    print(x[0], x[-1])

range(0,1) 和 range(2,3) 返回 => range(2,3)

num_list = [[1, 2, 3], [10, 20, 30], [100, 200, 300]]

for each in num_list:
    print (each[0], each[-1])
num_list = [[1,2,3],[10,20,30],[100,200,300]]

for x in range(0,3):

    for y in range(len(num_list[x])):
        if y==0 or y==2:
            print(num_list[x][y])

你可以使用上面的代碼

這是基於原始解決方案的答案,但不是最好的

num_list = [[1,2,3],[10,20,30],[100,200,300]]

for x in range(0, len(num_list)):

    for y in range(0,3,2): #where the change should be
        print(num_list[x][y],end=' ') #display the results in one line

如果您想要短單行,其他解決方案:

如果一行打印對您有好處,則有 3 種 oneliner 解決方案:

print(*[num for elem in vec for num in elem[0:3:2]])

print(*[num for elem in vec for num in elem[0:1]+elem[2:3]])

print(*[num for elem in vec for num in elem[0:1]+elem[-1:]])

輸出:

1 3 10 30 100 300

或每行打印一個數字:

print('\n'.join([str(num) for elem in vec for num in elem[0:3:2]]))

1
3
10
30
100
300

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM