2 a1207338829 a1207338829 于 2016.03.10 21:30 提问

python题,已知l=[1,2,3,4],那么l[-4::-1]等于什么

我们知道python列表有一个很神奇的功能list[::-1]是能将列表中的元素取相反的顺序,于是乎我对这个-1产生了很大得疑惑.同样已知l=[1,2,3,4],按照逻辑l[1:3:-1]是等于l[1:3][::-1],可是我得到的却是一个空的列表.同样l[-4::-1]应当和l[::-1]得到同样的结果,可是却得到了[1].我使用的python版本为3.4.3,如有高手能为我解决这个疑惑,在下感激不尽.

5个回答

sinat_30665603
sinat_30665603   2016.03.12 19:18
已采纳

切片永远向右看
-1只决定排序方向
print range(1, 101)[-4::-1]

print range(1, 101)[:-4:-1]

print range(1, 101)[4::-1]
看看这三个结果

a1207338829
a1207338829 恩 我懂了 l[::-1] 使列表反向排列 l[-4::-1]表示l列表中除去l[-4:]的其它元素的反向排列 l[:4:-1]表示除去l[:4]和l[4]的其它元素的反向排列 l[3:5:-1]或者[-5:-3:-1]之所以得到空列表是因为使用l[3:5] l[-5:-3]切片得到的结果是一个列表的两段数据 二者没有可比性 所以为空
2 年多之前 回复
zhangpengfei104
zhangpengfei104   2016.03.11 19:40

首先你看到了-1这代表着从相反方向取值,然后看-4代表着是从后往前的第四个元素开始的,也就是4.如果是-1就是4.你也可以这样理解正方向
第一个数的索引是0;负方向第一个数的索引是-1,不可能是-0,这样就没有意义了。所以-4就代表着方向开始的第4个数。

devmiao
devmiao   Ds   Rxr 2016.03.10 22:13

-1相当于4,-2相当于3,所以-4就是1

a1207338829
a1207338829 恩 这个我知道 只是不理解 l[-4::-1]为什么会得到这样的结果
2 年多之前 回复
enpterexpress
enpterexpress   Rxr 2016.03.10 22:35

I[-4:-1]=[1,2,3,4]

a1207338829
a1207338829 l[-4:-1]是等于[1,2,3]的 不包括-1下标指向的元素
2 年多之前 回复
a1207338829
a1207338829   2016.03.13 22:45

恩 我懂了 l[::-1] 使列表反向排列 l[-4::-1]表示l列表中除去l[-4:]的其它元素的反向排列 l[:4:-1]表示除去l[:4]和l[4]的其它元素的反向排列

l[3:5:-1]或者[-5:-3:-1]之所以得到空列表是因为使用l[3:5] l[-5:-3]切片得到的结果是一个列表的两段数据 二者没有可比性 所以为空

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现
题目中最重要的就是学会一种方法,就是把链表中长度为k的一段从链表中摘除,翻转之后在将其衔接回链表。这是主要的思绪,以下按照此思路给出程序: #include using namespace std; typedef struct LNode { int m_nValue; struct LNode* m_pNext; }LNode; LNode* reverseList(LN
1=5,2=15,3=215,4=2145,那么5=?
如题, 1=5,2=15,3=215,4=2145,那么5=?   答案:5=1. 哎,这个题出的,没反应过来
链表翻转【比如链表1→2→3→4→5→6,k=2, 翻转后2→1→4→3→6→】
2.【附加题】–1、链表翻转,给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2, 翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6, 用程序实现Node* RotateList(Node* list, size_t k). 提示:这个题是链表逆置的升级变型。#include<iostream> using namespac
数据结构习题之线性表
第二章 线性表     一.  基本要求、重点、难点       本章主要介绍线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本算法。本章的重点是熟练掌握顺序表(即线性表的顺序存储)和单链表上实现各种基本算法以及相关的时间复杂度分析,难点是能够使用本章所学到的基本知识设计有效算法,解决与线性表相关的应用问题。       二.
链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6
给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6
python语言易错知识点强化
1.语句x = 3==3, 5执行结束后,变量x的值为_____________。((True, 5)) 2.已知a = [1, 2, 3]和b = [1, 2,4],那么id(a[1])==id(b[1])的执行结果为___________。(True) 3.表达式 {1, 2, 3, 4} - {3, 4, 5, 6}的值为__________________。({1,2}) 4.已知
Python输出1,2,3,4组成的所有三位数
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 输入格式: 无输入。 输出格式: 每一行输出一个组合,中间以空格分开。 输入样例: 在这里给出一组输入。例如: 输出样例: 在这里给出相应的输出。例如: 1 2 3 1 2 4 1 3 2 1 3 4 1 4 2 1 4 3 2 1 3 2 1 4 2 3 1 2 3 4 2 4...
python之路 - while,for循环小习题
#1、使用while循环输入 1 2 3 4 5 6     8 9 10n = 1 while n &amp;lt; 11: if n == 7: pass else: print(n) n = n + 1 #2.求1-100的所有数的和sum = 0 for i in range(1,101): sum += i print (sum) #3.输出 1-100 内的所有偶数for ...
网易笔试算法题
网易笔试算法题  一个数列:1,12,123,...12345678910,1234567891011...,计算这个数列的第l个到第r个(包含端点)有多少个数可以被3整除。输入描述:输入包括两个整数 l 和 r (1 &amp;lt;= l &amp;lt;= r &amp;lt;= 1e9),表示要求解的区间两端。输出描述:输出一个整数,表示区间内能被 3 整除的数字个数。示例:l = 2, r = 5,输出3.解答...
链表举例
源代码:     L=(LinkList)malloc(sizeof(LNode));       P=L;     for(i=1;i     {         P->next=(LinkList)malloc(sizeof(LNode));         P=P->next;   P->data=i*2-1;     }     P->next=NULL;     fo