Python,如何从列表中的列表中打印特定项目?

时间:2018-08-23 15:30:57

标签: python list printing

我正在尝试在列表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

什么是解决此问题的好方法?

8 个答案:

答案 0 :(得分:1)

使用索引。

例如:

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

答案 1 :(得分:1)

您不需要使用范围来完成任务。
无论如何,即使您愿意,该行中的代码也有错误

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为空。有关更多详细信息,请参见documentation

您应该写类似的东西

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

答案 2 :(得分:1)

可能是最小的解决方案:

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

for each in num_list:
    print (each[0], each[-1])

答案 5 :(得分:0)

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])

您可以使用上面的代码

答案 6 :(得分:0)

这是基于原始解决方案的答案,但不是最好的

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

答案 7 :(得分:0)

如果您想要短单行,其他解决方案:

如果一行打印对您有好处,则有 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