【问题标题】:Python3: how to slice a list to two part in a loop, one is 20%, the left is another partPython3:如何在循环中将列表分成两部分,一个是 20%,左边是另一部分
【发布时间】:2017-02-26 11:56:07
【问题描述】:

您好,我想对一个大列表数据进行切片,如下表所示,一部分是列表的 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[]

【问题讨论】:

    标签: list python-3.x slice


    【解决方案1】:

    你可以通过告诉你想要从哪个索引开始直到结束来获取第二部分。

    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):]
    

    【讨论】:

    • 感谢您的 cmets,很抱歉我错过了有关我的问题的一些信息,我已经更新了我的问题
    • @tktktk0711 ,现在更清楚了 :) 在这种情况下,您可以执行我在更新答案中所做的操作。
    【解决方案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% 切片应该有多少成员,然后将此数字应用于列表切片。但是请注意,math.ceil() 总是四舍五入 ,所以如果你有类似 2.1 的东西,它最终会是 3.0(这意味着某些切片的成员将略多于 20%,例如 22% )。如果您想以更熟悉的方式进行舍入(2.49 -> 2;2.5 -> 3),round() 将是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2014-08-19
      相关资源
      最近更新 更多