Python 使用拆分附加到多个列表

Python 使用拆分附加到多个列表,python,Python,是否可以在“for”循环中组合这两个语句 num_pro=raw_input("ENTER THE NUMBER OF PRODUCTIONS: ") right=[];left=[]; for i in range(int(num_pro)): l,r=raw_input("ENTER PRODUCTION"+str(i+1)+" : ").split('->') right.append(r);left.append(l) 示例输入:E->abc不能不使其更复杂。每个

是否可以在“for”循环中组合这两个语句

num_pro=raw_input("ENTER THE NUMBER OF PRODUCTIONS: ")

right=[];left=[];

for i in range(int(num_pro)):
   l,r=raw_input("ENTER PRODUCTION"+str(i+1)+" : ").split('->')
   right.append(r);left.append(l)

示例输入:E->abc

不能不使其更复杂。每个方法都需要单独调用,唯一的方法是显式调用,就像您所做的那样,或者在循环中调用

如果您愿意存储整个产品(这不一定是个坏主意,因为它使双方保持同步),那么只需附加分割结果即可

productions = []

for ...
  productions.append(....split('->'))
将元组附加到一个列表中,然后使用
zip()
拆分列表:


zip(*iterable)
转换嵌套列表;列变成行。因为您有两个“列”(成对的值),所以最终会得到两行。

对不起,您的问题是什么?split给出了两个值。我想直接将它们附加到列表中,而不是先存储在变量中,然后再将它们附加到列表中。怎么做?类似于
right.append(r);左.append(l)=原始输入(“输入生产”+str(i+1)+“:”).split('->')
为什么
r
在左边而
l
在右边?如何:
map(list.append,(左,右),原始输入(“输入生产”+str(i+1)+“:”).split('->')
应该可以工作,虽然我不确定把这么多东西塞进一行是不是个好主意。@Blckknght谢谢。你是个天才。这正是我要说的。@其他人可能会觉得很复杂。但是一些新的东西总是很好的。对于我剩下的课程,我需要把它们放在单独的列表中。输入可能像E->a*b E->a+b E->a/b,我想重复存储两侧,然后检索位置。我想减少代码中的行数。它给了我同样数量的行。@RatDon:这是Python;不要试图减少不必要的线条。首先也是最重要的是保持可读性。减少Python代码行通常会使其复杂化,并且在其他实现中可能会降低其速度。
entries = []

for i in range(int(num_pro)):
    entries.append(raw_input("ENTER PRODUCTION"+str(i+1)+" : ").split('->'))

left, right = zip(*entries)