【问题标题】:using two for loop together to convert 2D list to 1D list in python在python中一起使用两个for循环将二维列表转换为一维列表
【发布时间】:2018-11-16 06:24:07
【问题描述】:
A = [1,3,5]
B = ['a','b']
for x in A , for y in B :
  print(x,y)

我们如何实现两个for循环并可以在一维列表中转换二维列表

期望的输出:[(1,'a') ,(2,'b') ,(3,'a') ,(3,'b') ,(5,'a'),(5, 'b')]

【问题讨论】:

标签: python arrays list for-loop


【解决方案1】:

如果您只想同时遍历两个列表,可以使用 zip:

x = [1, 3, 5]
y = ['a', 'b', 'c']
for i, j in zip(x, y):
    print(i, j)  # Will print "1 a" followed by "3 b"

请注意,zip 实际上会返回一个包含两个列表中组合元素的元组列表,如果列表的长度不相等,那么较长的列表将被截断

【讨论】:

  • 这是一种解释 - 但随后 OP 确实要求 2 for 循环。如果你想要更少的 for 循环:print(*zip(x,y), sep="\n") 也可以使用
【解决方案2】:

如果您希望两个列表中的元素均匀分布:

A = [1,3,5]
B = ['a','b']

l = []

for x in A:
    for y in B:
        l.extend([x, y])                

>>> print(l)
[1, 'a', 1, 'b', 3, 'a', 3, 'b', 5, 'a', 5, 'b']

【讨论】:

  • 其给出 [[1, 'a']] [[1, 'a'], [1, 'b']] [[1, 'a'], [1, 'b '], [3, 'a']] [[1, 'a'], [1, 'b'], [3, 'a'], [3, 'b']] [[1, 'a '], [1, 'b'], [3, 'a'], [3, 'b'], [5, 'a']] [[1, 'a'], [1, 'b' ], [3, 'a'], [3, 'b'], [5, 'a'], [5, 'b']]
  • 我无法从给定的输入中重现该输出,请在此处测试/编辑以显示输入如何获得该输出repl.it/@downshift/TurboFatalDatabases
【解决方案3】:
A = [1,3,5]
B = ['a','b']

l = []
#for each element in A
for i in A:
    #for each element in B
    for o in B:
        l.append((i,o))

遍历每个列表中的每个元素,然后将它们附加在一起

【讨论】:

    猜你喜欢
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2020-06-25
    • 2023-02-19
    • 2017-05-06
    • 2023-03-10
    相关资源
    最近更新 更多