基于两个列表

时间:2018-03-17 15:45:22

标签: python

我有一个包含字符串元素的列表:

movielst = ['A WALK,DRAGONBALL', 'JAMES BOND,MISSION']

和另一个包含整数值的列表:

userlst = [[1,20],[6,7]]

我打算根据两个列表打印输出,其中movielst中的第一个元素对应于userlst中的第一个列表,依此类推。

输出得到:

Movies: A WALK,DRAGONBALL
Users: 1,20

Movies: JAMES BOND,MISSION
Users: 6,7

我写了

for j in range(len(userlst)-1):
    for i in movielst:
        print("Movies: " + str(i))
        print("Users: " + str(userlst[j]))

但我得到了:

Movies: A WALK,DRAGONBALL
Users: 1,20

Movies: JAMES BOND,MISSION
Users: 1,20               #should be 6,7

如何根据两个列表并行打印输出?

5 个答案:

答案 0 :(得分:1)

您可以使用zip

<强>实施例

movielst = ['A WALK,DRAGONBALL', 'JAMES BOND,MISSION']
userlst = [[1,20],[6,7]]
for i in zip(movielst, userlst):
    print("Movies: {}".format(i[0]))
    print("Users: {}".format(", ".join(map(str, i[1]))))

<强>输出:

Movies: A WALK,DRAGONBALL
Users: 1, 20
Movies: JAMES BOND,MISSION
Users: 6, 7

注意:

  1. 我使用map将int转换为userlst的字符串
  2. join将userlst中的元素连接到您所需的格式。

答案 1 :(得分:1)

理解使用zipjoinformat

>>> print '\n'.join("Movies: {}\nUsers: {}".format(x,y) for x,y in zip(movielst,userlst))
Movies: A WALK,DRAGONBALL
Users: [1, 20]
Movies: JAMES BOND,MISSION
Users: [6, 7]

或者,正如评论中所述,如果你想要双倍行距:

>>> print '\n\n'.join("Movies: {}\nUsers: {}".format(*z) for z in zip(movielst,userlst))
Movies: A WALK,DRAGONBALL
Users: [1, 20]

Movies: JAMES BOND,MISSION
Users: [6, 7]

答案 2 :(得分:0)

如果您知道两个列表的长度相同:

for i in range(len(movielst)):
    print("Movies: {}".format(str(movielst[i]))
    print("Users: {}".format(str(userlst[i])))
    print(' ')

这样你就可以遍历两个循环并在同一个循环中打印两个列表的相同索引。

.format的工作原理如下:

print('text {} text {}'.format(<first thing>, <second thing>))

输出:

text <first thing> text <second thing>

答案 3 :(得分:0)

第一个循环中的j将不会增加,直到'i'遍历每个元素,因此j将两次打印1.20。要同时遍历两个列表,您可以使用一个for循环。

for j in range(len(userlst)):
    print("Movies: " + str(movielst[j]))
    print("Users: " + str(userlst[j]))

输出将是:

Movies: A WALK,DRAGONBALL  
Users: [1, 20]  
Movies: JAMES BOND,MISSION
Users: [6, 7]

答案 4 :(得分:0)

你可以试试这个:

x(columnIndex)

输出:

movielst = ['A WALK,DRAGONBALL', 'JAMES BOND,MISSION']

userlst = [[1,20],[6,7]]

for i in zip(movielst,userlst):
    print("Movies : {}".format(i[0]))
    print("Users : {} {}".format(*i[1]))