使用剥离列表创建嵌套的理解列表

2024-04-19 06:16:43 发布

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

我正在进行CodeCademy循环字符串操作的练习,我尝试使用列表理解来执行任务,但无法正确管理: 正确的执行方法是有一个嵌套的列表,每个列表由剥离的字符串组成。以下是我如何做到正确的:

transactions_clean = []
for transaction in daily_transactions_split:
  new_trans = []
  for i in range(len(transaction)):
    new_trans.append(transaction[i].strip('\n').strip())
  transactions_clean.append(new_trans)

结果是:

^{pr2}$

这正是我要找的。在

这个方法使用一个嵌套循环,我对使用列表理解来执行它很感兴趣。我设法想出了:

transactions_clean = [st.strip('\n').strip() for transaction in daily_transactions_split for st in transaction]

它设法正确地剥离字符串,但创建了一个非嵌套的字符串列表。 我的目标能用理解来实现吗?在

谢谢


Tags: 方法字符串inclean列表transnewfor
2条回答

你没有得到一个嵌套的列表,因为你的列表理解中只有一对[](你的表达式本身不会产生列表)。只需这样做(请注意,我必须交换for子句的顺序,并插入内部[]):

transactions_clean = [[st.strip('\n').strip() for st in transaction] for transaction in daily_transactions_split]

模式[(x, y) for x in xs for y in ys]相当于itertools.product(xs, ys)。在

你所写的理解并不需要两个集合的乘积。在

import itertools

items = [(x, y) for x, y in itertools.product(range(5), range(10, 15))]
print(len(items), items)

注:新集合的长度为5*5,即每个集合中项目数的乘积。在

输出:

25 [(0, 10), (0, 11), (0, 12), (0, 13), (0, 14), (1, 10), (1, 11), (1, 12), (1, 13), (1, 14), (2, 10), (2, 11), (2, 12), (2, 13), (2, 14), (3, 10), (3, 11), (3, 12), (3, 13), (3, 14), (4, 10), (4, 11), (4, 12), (4, 13), (4, 14)]

^{pr2}$

输出:

[['\x0b\x0b\x0b\x0bEdith Mcbride\r\r\r', '\x0c\x0c$1.21\x0b', '\x0bwhite ', '\n\n09/15/17\t\t'], ['\t\t\tHerbert Tran\x0c\x0c\x0c', '\t\t$7.29\n\n\n', ' white&blue\r', '\n09/15/17 ']]

[['Edith Mcbride', '$1.21', 'white', '09/15/17'], ['Herbert Tran', '$7.29', 'white&blue', '09/15/17']]

请注意,.strip('\n').strip()与{}执行相同的操作

相关问题 更多 >