如何在forloop结构中打印列表列表中的第一个列表元素?

2024-05-19 22:46:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打印列表列表的第一个列表:

以下是我的尝试:

  1. 我定义了一个函数,将列表拆分为列表中的子列表
  2. 定义了初始列表(codes
  3. 尝试使用for循环结构仅打印codes_chunks中的第一个列表
########## define a split function ########

def chunks(lst, n):
    """Yield successive n-sized chunks from lst."""
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

########## splitting the list #############

countries = ['Spain', 'Portugal']
codes=['A1', 'A2', 'A3', 'A4', 'A6', 'A7']

codes_chunks = list(chunks(codes, 2))
###########################################

# tried to print just for the first list #

for country in countries:
     for chunks_sample in codes_chunks[0]:
         for code in chunks_sample:
               print(code+'-'+country)
###########################################

控制台输出:

# A-Spain
# 1-Spain
# A-Spain
# 2-Spain
# A-Portugal
# 1-Portugal
# A-Portugal
# 2-Portugal

预期产出:

# A1-Spain
# A2-Spain
# A1-Portugal
# A2-Portugal

我错过了什么

提前谢谢


Tags: theina2列表for定义a1countries
3条回答
for chunks_sample in codes_chunks[0]:

这条线。它不应该是code_chunks而不是code_chunks[0]吗?或codes_chunks[0:2]

更改后的输出:

A1-Spain
A2-Spain
A3-Spain
A4-Spain
A6-Spain
A7-Spain
A1-Portugal
A2-Portugal
A3-Portugal
A4-Portugal
A6-Portugal
A7-Portugal

codes_chunks[0:2]

A1-Spain
A2-Spain
A3-Spain
A4-Spain
A1-Portugal
A2-Portugal
A3-Portugal
A4-Portugal

codes_chunks[0:1]

A1-Spain
A2-Spain
A1-Portugal
A2-Portugal

TL;博士:

codes_chunks[0]上循环已经提供了“代码”A1A2,因此最里面的循环只是太深了一层

逐步:

>>> codes_chunks = list(chunks(codes, 2))
[['A1', 'A2'], ['A3', 'A4'], ['A6', 'A7']]

因此,二阶循环中的codes_chunks[0]仅为['A1', 'A2']

>>> for country in countries:
...     # code_chunks[0] = ['A1', 'A2']
...     for chunks_sample in codes_chunks[0]:
...         # you don't need another loop here
...         # chunks_sample = 'A1' or 'A2'
...         # `for code in chunks_sample` would loop over 'A1' yielding 'A' and '1'
...         print(chunks_sample+'-'+country)
A1-Spain
A2-Spain
A1-Portugal
A2-Portugal

泛化到更多的块

如果需要将循环泛化到所有codes_chunks,则有两个选项:

选项1:将另一个for循环环绕其他所有内容,以交替输出中的国家:

>>> for codes_chunk in codes_chunks:
...    for country in countries:
...        for chunks_sample in codes_chunk:
...            print(chunks_sample+'-'+country)
A1-Spain
A2-Spain
A1-Portugal
A2-Portugal
A3-Spain
A4-Spain
A3-Portugal
A4-Portugal
A6-Spain
A7-Spain
A6-Portugal
A7-Portugal

选项2:在最外层环路内添加相同环路,以逐个完成国家/地区:

>>> for country in countries:
...    for codes_chunk in codes_chunks:
...        for chunks_sample in codes_chunk:
...            print(chunks_sample+'-'+country)
A1-Spain
A2-Spain
A3-Spain
A4-Spain
A6-Spain
A7-Spain
A1-Portugal
A2-Portugal
A3-Portugal
A4-Portugal
A6-Portugal
A7-Portugal

如果打印codes_chunks

print(codes_chunks) # [['A1', 'A2'], ['A3', 'A4'], ['A6', 'A7']]

不是你选择的code_cunks[0]是['A1','A2']

如果您现在对它进行迭代,您将得到A1,这是必需的,但是您再次进行迭代,结果是A&1。因此,您需要删除额外的循环

所需输出的正确代码:

########## define a split function ########

def chunks(lst, n):
    """Yield successive n-sized chunks from lst."""
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

########## splitting the list #############


countries = ['Spain', 'Portugal']
codes = ['A1', 'A2', 'A3', 'A4', 'A6', 'A7']

codes_chunks = list(chunks(codes, 2))
###########################################

# tried to print just for the first list #

for country in countries:
    for chunks_sample in codes_chunks[0]:
        print(chunks_sample+'-'+country)
###########################################

相关问题 更多 >