if语句python为每两个值

时间:2018-03-16 02:43:17

标签: python python-2.7

以下是示例代码:

List1 = [['a', 'b', 'c'], ['e', 'f', 'g'], ['1', '2', '3']]
range_value = len(List1) * 2
for x in range(0, range_value):
   if x == 0 or x == 1:

       for y in List1[0]:
           print y
           print x
   if x == 2 or x == 3:
       for y in List1[1]:
           print y
           print x

   if x == 4 or x == 5:
       for y in List1[2]:
            print y
            print x

此代码看起来是定义if语句的手动步骤。

如果我有100或1000个子列表等大值。

我必须写100或1000的if语句,

如果x值为0且打印List1 [0]值为1且x值为2且打印List1 [1]为3,如果x值为4且打印列表为1 [2]。

打印x值也如下所示

print x为0并且打印List1 [0]的y,打印x为1并且打印列表1 [0]的y,打印x为2并且打印列表1 [1]的y,打印x为3并且打印y为List2 [1]等等

在这里帮助我

4 个答案:

答案 0 :(得分:1)

由于您的索引按两个分组,您可以执行以下操作,以便相同的操作将发生两次。

List1 = [['a', 'b', 'c'], ['e', 'f', 'g'], ['1', '2', '3']]

for x in xrange(len(List1) * 2):
    print x
    for y in List1[x//2]: print y

在Python 3中

由于您的索引按两个分组,您可以执行以下操作,以便相同的操作将发生两次。

List1 = [['a', 'b', 'c'], ['e', 'f', 'g'], ['1', '2', '3']]

for x in range(len(List1) * 2):
    print(x)
    for y in List1[x//2]: print(y)

使用列表推导也可以

List1 = [['a', 'b', 'c'], ['e', 'f', 'g'], ['1', '2', '3']]

[print(y) for x in range(len(List1) * 2) for y in List1[x//2]]

答案 1 :(得分:0)

您不需要使用if条款。您可以通过以下方式使代码模式动态化:

for x in List1:            # Iterate over the list of lists
    for _ in range(2):     # Do the process below two times like you want
        for y in x:        # Iterate over each item of the sublist
            print(y)       # Print the item

另一个想法可能是第一个循环的迭代加倍,然后使用一个分区:

for x in range(len(List1) * 2):
    for y in List1[x//2]:      # Floor division would turn 0//2 > 0, 1//2 > 0, 2//2 > 1, 3//2 > 1, 4//2 > 1... efectively doubling the loop
        print(y)

请注意,我的代码是在python 3中。为了转换为python 2,我认为您必须删除print的问题并将range更改为xrange(更好的性能)。

另外,如果你真的想使用if语句,我会建议在第一行下面的行中使用elif而不是if,这会让你的代码更快一些因为另一个条件不会被检查,如果他们之上的人是真的。

答案 2 :(得分:0)

基本上你的内部for循环基于x / 2的值运行: 这有效:

def runMethod(x,List1):
    if x %2 == 0:
        for y in List1[int(x/2)]:
            print y
            print x




List1 = [['a', 'b', 'c'], ['e', 'f', 'g'], ['1', '2', '3']]
range_value = len(List1) * 2
for x in range(0, range_value):
    runMethod(x,List1)

答案 3 :(得分:0)

您可能希望使用变量来替换第一个和第二个参数。然后逐步增加它。 例如,

for x in range(0, range_value):
    if x == first_variable or x == second_variable:
        for y in List[first_variable]:
            print(y)
    first_variable += 2
    second_variable += 2