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