Python3: 如何在循环中将列表分成两部分,一个是 20%,左边是另一部分
Python3: how to slice a list to two part in a loop, one is 20%, the left is another part
你好我想像下面的列表那样对一个大列表数据进行切片,一部分是列表的 20%(连续)部分,另一部分是剩下的。我只知道获取 20% 的部分,但如何在循环中获取列表的左侧部分。谢谢我的代码如下。
例如,当 X1 = [ '1', '2'], X2 = ['3','4','5','6', 7','8','9','10'] .然后
X1 = ['2','3'], X2 = ['1','4','5','6', 7','8','9','10'], .. ......
X = ['1','2','3','4','5','6', 7','8','9','10']
index = 0
for i in range(9):
X1 = X[i:(i+2)]
X2 = X[]
您可以通过告诉您要从哪个索引开始直到结束来获取第二部分。
X = ['1','2','3','4','5','7','8','9','10']
index = 0
for i in range(9):
X1 = X[i:(i+2)]
X2 = X[:i] + X[(i+2):]
我想提供一个类似但更强大的解决方案。你说你需要获得大名单的 20%。虽然 2 的切片大小适用于具有 9 个成员的列表,但对于更大的列表,您显然需要增加它。如果您不知道一个列表有多少成员,它可能会特别乏味且容易出错。因此,我会建议这样的事情:
import math
X = ['1','2','3','4','5','7','8','9','10']
# Calculate how many members a 20% slice should have
twenty = int(math.ceil(len(X) * 20 / 100.0))
for i in range(len(X)):
X1 = X[i:(i+twenty)]
X2 = X[:i] + X[(i+twenty):]
它的作用是计算 ~20% slice 应该有多少成员,然后将这个数字应用于列表切片。但是请注意,math.ceil()
always rounds up, so if you have something like 2.1, it would end up being 3.0 (meaning that some slices will have slightly more members than 20%, e.g. 22%). If you want to round in a more familiar fashion (2.49 -> 2; 2.5 -> 3), round() 将是一个不错的选择。
你好我想像下面的列表那样对一个大列表数据进行切片,一部分是列表的 20%(连续)部分,另一部分是剩下的。我只知道获取 20% 的部分,但如何在循环中获取列表的左侧部分。谢谢我的代码如下。 例如,当 X1 = [ '1', '2'], X2 = ['3','4','5','6', 7','8','9','10'] .然后 X1 = ['2','3'], X2 = ['1','4','5','6', 7','8','9','10'], .. ......
X = ['1','2','3','4','5','6', 7','8','9','10']
index = 0
for i in range(9):
X1 = X[i:(i+2)]
X2 = X[]
您可以通过告诉您要从哪个索引开始直到结束来获取第二部分。
X = ['1','2','3','4','5','7','8','9','10']
index = 0
for i in range(9):
X1 = X[i:(i+2)]
X2 = X[:i] + X[(i+2):]
我想提供一个类似但更强大的解决方案。你说你需要获得大名单的 20%。虽然 2 的切片大小适用于具有 9 个成员的列表,但对于更大的列表,您显然需要增加它。如果您不知道一个列表有多少成员,它可能会特别乏味且容易出错。因此,我会建议这样的事情:
import math
X = ['1','2','3','4','5','7','8','9','10']
# Calculate how many members a 20% slice should have
twenty = int(math.ceil(len(X) * 20 / 100.0))
for i in range(len(X)):
X1 = X[i:(i+twenty)]
X2 = X[:i] + X[(i+twenty):]
它的作用是计算 ~20% slice 应该有多少成员,然后将这个数字应用于列表切片。但是请注意,math.ceil()
always rounds up, so if you have something like 2.1, it would end up being 3.0 (meaning that some slices will have slightly more members than 20%, e.g. 22%). If you want to round in a more familiar fashion (2.49 -> 2; 2.5 -> 3), round() 将是一个不错的选择。