if 语句 python 表示每两个值



下面是示例代码:

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 且 1 打印 List1[0] 值,如果 x 值为 2

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

打印 x 值也像下面一样

打印 x 为 0,打印 y为列表 1[0],打印 x 为 1,打印 y 为列表 1[0],打印 x 为 2,打印 y 为列表 1[1],打印

x 为 3,打印 y 为列表 2[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 中

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

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]]

基本上,你的内部 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)
您可能

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

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

你不需要使用 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在第一个语句下面的行中,这将使你的编码速度更快,因为如果上面的某个人是真的,就不会检查另一个条件。

最新更新