2024-04-19 19:51:39 发布
网友
这是我目前的名单:
x = [1.0, 0.0, 3.5, 1.2, 5.4]
我想要的是:
newx = [1, 0, 0, 0, 3, 5, 1, 2, 5, 4]
我只需要在小数点处拆分列表,不想在新列表中添加任何额外的零。似乎应该有一个简单的解决办法,我只是不知道,因为我这么新。你知道吗
>>> x = [1.0, 0.0, 3.5, 1.2, 5.4] >>> y = [str(v).split(".") for v in x] # Will give list of list >>> [int(v) for li in y for v in li] # Flatten the list [1, 0, 0, 0, 3, 5, 1, 2, 5, 4]
x = [1.0, 0.0, 3.5, 1.2, 5.4] newx = [int(j) for i in x for j in str(i).split('.')] >>>[1, 0, 0, 0, 3, 5, 1, 2, 5, 4]
顺便说一句,理解和这个一样:
var result = [] for i in x: for j in str(i).split('.'): result.append(int(j))
这可以使用^{}和^{}来完成。你知道吗
在generator expression中,我们获取列表中的每个项目,并使用^{}获取数字并将其转换为字符串。然后在字符"."上拆分该字符串:
"."
(str(item).split(".") for item in x)
这为我们提供了一个列表生成器(['1', '0'], ['0', '0'], ...)。然后我们使用^{}将其展平为一个迭代器:
['1', '0'], ['0', '0'], ...
itertools.chain.from_iterable(...)
然后我们使用list comprehension再次将各个数字字符串转换为int。你知道吗
>>> import itertools >>> x = [1.0, 0.0, 3.5, 1.2, 5.4] >>> digit_strings = itertools.chain.from_iterable(str(item).split(".") for item in x) >>> [int(item) for item in digit_strings] [1, 0, 0, 0, 3, 5, 1, 2, 5, 4]
itertools.chain.from_iterable()是整平iterables的最佳工具—它高效灵活,语法清晰(只是一个函数调用,在stdlib中有清晰的文档)。你知道吗
itertools.chain.from_iterable()
顺便说一句,理解和这个一样:
这可以使用^{} 和^{} 来完成。你知道吗
在generator expression中,我们获取列表中的每个项目,并使用^{} 获取数字并将其转换为字符串。然后在字符
"."
上拆分该字符串:这为我们提供了一个列表生成器(} 将其展平为一个迭代器:
['1', '0'], ['0', '0'], ...
)。然后我们使用^{然后我们使用list comprehension再次将各个数字字符串转换为int。你知道吗
itertools.chain.from_iterable()
是整平iterables的最佳工具—它高效灵活,语法清晰(只是一个函数调用,在stdlib中有清晰的文档)。你知道吗相关问题 更多 >
编程相关推荐