首页 \ 问答 \ Python列表切片(Python list slicing)

Python列表切片(Python list slicing)

我无法理解在这里做什么。 有人可以帮忙吗

我有几个列表:

array = [7,8,2,3,4,10,5,6,7,10,8,9,10,4,5,12,13,14,1,2,15,16,17]
slice = [2, 4, 6, 8, 10, 12, 15, 17, 20, 22]
intervals = [12, 17, 22]
output = []
intermediate = []

slice是我需要从切片array获得的索​​引列表。 interval是当slice[i] is interval[j]时用于停止切片的索引列表,其中i和j是循环变量。 我需要根据slice[i] is not interval[j]时的条件,根据sliceintervalsarray形成一个列表列表

intermediate =intermediate + array[slice[i]:slice[i+1]+1]

在我的情况下:

slice[i]interval[j]相等于值12.所以我需要从array形成一个列表列表

intermediate = array[slice[0]:slice[0+1]+1] + array[slice[2]:slice[2+1]+1] + array[slice[4]:slice[4+1]+1]

这是

intermediate  = array[2:(4+1)] + array[6:(8+1)] + array[10:(12+1)]  

并且当slice[i] is interval[j] output = output + intermediate并且继续切片时。

output = output + [intermediate]

这是

output = output + [array[2:(4+1)] + array[6:(8+1)] + array[10:(12+1)]]

现在,间隔中的下一个值是17,所以直到我们在slice有17个,我们从array[slice[6]:slice[6+1]+1]形成另一个列表并将其添加到输出中。 这继续下去。

最终输出应该是:

output = [array[slice[0]:slice[0+1]+1] + array[slice[2]:slice[2+1]+1] + array[slice[4]:slice[4+1]+1] , array[slice[6]:slice[6+1]+1], array[slice[8]:slice[8+1]+1]]

这是

output = [[2, 3, 4, 5, 6, 7, 8, 9, 10], [12, 13, 14], [15, 16, 17]]

I'm not able understand what to do here. Can someone help.

I've a few lists:

array = [7,8,2,3,4,10,5,6,7,10,8,9,10,4,5,12,13,14,1,2,15,16,17]
slice = [2, 4, 6, 8, 10, 12, 15, 17, 20, 22]
intervals = [12, 17, 22]
output = []
intermediate = []

slice is a list of indices I need to get from slicing array. interval is a list of indices used to stop the slicing when slice[i] is interval[j] where i and j are looping variables. I need to form a list of lists from array based on slice and intervals based on the condition that when slice[i] is not interval[j]

intermediate =intermediate + array[slice[i]:slice[i+1]+1]

here in my case:

when slice[i] and interval[j] are equal for value 12. So I need to form a list of lists from array

intermediate = array[slice[0]:slice[0+1]+1] + array[slice[2]:slice[2+1]+1] + array[slice[4]:slice[4+1]+1]

which is

intermediate  = array[2:(4+1)] + array[6:(8+1)] + array[10:(12+1)]  

and when slice[i] is interval[j] output = output + intermediate and the slicing is continued.

output = output + [intermediate]

which is

output = output + [array[2:(4+1)] + array[6:(8+1)] + array[10:(12+1)]]

now the next value in interval is 17 so till we have 17 in slice we form another list from array[slice[6]:slice[6+1]+1] and add this to the output. This continues.

The final output should be:

output = [array[slice[0]:slice[0+1]+1] + array[slice[2]:slice[2+1]+1] + array[slice[4]:slice[4+1]+1] , array[slice[6]:slice[6+1]+1], array[slice[8]:slice[8+1]+1]]

which is

output = [[2, 3, 4, 5, 6, 7, 8, 9, 10], [12, 13, 14], [15, 16, 17]]

原文:https://stackoverflow.com/questions/39187018
更新时间:2022-03-21 08:03

最满意答案

您可以在工厂函数中创建TaggedFun实例:

interface TaggedFun {
    (): void;
    tag: boolean;
}

function taggedFactory(tag: boolean, fn?: () => void): TaggedFun {
    let tagged = (fn || function () {
        // function body here
    }) as TaggedFun;

    tagged.tag = tag;
    return tagged;
}

这样,您始终知道您拥有tag属性(如果使用工厂创建实例),并且您获得了类型安全性。
例如:

function doSomething(tagged: TaggedFun) {}

doSomething(() => { }); // error 
doSomething(taggedFactory(true)); // ok
doSomething(taggedFactory(true, () => { })); // ok

游乐场代码


You can create instances of TaggedFun in a factory function:

interface TaggedFun {
    (): void;
    tag: boolean;
}

function taggedFactory(tag: boolean, fn?: () => void): TaggedFun {
    let tagged = (fn || function () {
        // function body here
    }) as TaggedFun;

    tagged.tag = tag;
    return tagged;
}

This way you always know that you have the tag property (if you create the instance using the factory), and you get type safety.
For example:

function doSomething(tagged: TaggedFun) {}

doSomething(() => { }); // error 
doSomething(taggedFactory(true)); // ok
doSomething(taggedFactory(true, () => { })); // ok

(code in playground)

相关问答

更多

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。