【问题标题】:Pythonic way to loop two lists循环两个列表的 Pythonic 方式
【发布时间】:2017-11-16 10:27:58
【问题描述】:

我有两个数组:

Array_a = [20, 30, 50, 20]
Array_b = [1 ,2  ,3  , 4] 

希望得到以下输出:

(20, '(1,Days Learning)') 
(30, '(2,Days Learning)') 
(50, '(3,Days Learning)') 
(20, '(4,Days Learning)')

我的代码如下所示:

for i,j in zip(Array_a, Array_b):
    msg = (i, "(" + str(j) + ",Days Learning)")
    print(msg)

但我想像这样更容易:

for a, b in []

【问题讨论】:

  • res = [ (first, (second,'Days Learning')) for first, second in zip(Array_a, Array_b) ] ?
  • OP,请格式化您想要的输出。是tupleslist 还是什么?

标签: python arrays loops for-loop


【解决方案1】:

试试这个:

msg = [(a, '({}, Days Learning)'.format(b)) for a, b in zip(Array_a, Array_b)]
print(msg)

将输出:

[(20, '(1, Days Learning)'), (30, '(2, Days Learning)'), (50, '(3, Days Learning)'), (20, '(4, Days Learning)')]

注意:

要逐行打印元素,您可以使用 printjoin 以及另一个列表理解:

print('\n'.join(str(m) for m in msg))

【讨论】:

  • 没有比这个恕我直言更好的了。 +1
  • 你也可以 exploit list-comprehensionsprint 为你喜欢这样:[print(a, '({},Days Learning)'.format(b)) for a, b in zip(array_a, array_b)]。未分配。
  • 是的,但它也会打印一个填充有None 对象的list。但是,您可以执行print('\n'.join(str(m) for m in msg)) 之类的操作,在我看来这更好一些。
  • 它不会print 它。只需创建它,并且可能很快就会创建 garbage-collect 它,因为没有对象会指向它。
  • 当然,join() 也不错
【解决方案2】:

这个怎么样: 对我来说它看起来更像 Python 的方式

Array_a = [20, 30, 50, 20]
Array_b = [1 ,2  ,3  , 4] 

sample = tuple(zip(Array_a,zip(Array_b,["Days Learning" for i in range(len(Array_b))])))
print(sample)

它会给你这个结果:

((20, (1, 'Days Learning')), (30, (2, 'Days Learning')), (50, (3, 'Days Learning')), (20, (4, 'Days Learning')))

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2021-03-31
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多