Python 3.x 在Python中使用负索引获取特定范围内的列表元素

Python 3.x 在Python中使用负索引获取特定范围内的列表元素,python-3.x,Python 3.x,输入 list1 = ['Apple','Google','MS','Facebook'] print(list1) list1[-4:1] 输出 list1 = ['Apple','Google','MS','Facebook'] print(list1) list1[-4:1] [‘苹果’、‘谷歌’、‘微软’、‘脸谱’] [“苹果”] 有人能解释一下结果吗?当使用负索引时,从索引-1开始。说list1[-0]并让它与list1[0]不同似乎很愚蠢。因此,您

输入

list1 = ['Apple','Google','MS','Facebook']    
print(list1)    
list1[-4:1]
输出

list1 = ['Apple','Google','MS','Facebook']    
print(list1)    
list1[-4:1]
[‘苹果’、‘谷歌’、‘微软’、‘脸谱’]
[“苹果”]


有人能解释一下结果吗?

当使用负索引时,从索引
-1
开始。说
list1[-0]
并让它与
list1[0]
不同似乎很愚蠢。因此,您的代码变成了“从第四个到最后一个到第1个抓取元素”。另一种思考方式是
list1[-4]
list1[len(list1)-4]
相同。因此,您将在范围
[0,1)
内执行此操作,并且只返回第一个元素。

这可能会对您有所帮助

from math import sqrt
from sklearn.cluster import MiniBatchKMeans 
import pandas_datareader as dr
from matplotlib import pyplot as plt
import pandas as pd
import matplotlib.cm as cm
import seaborn as sn

start = '2020-1-1'
end = '2021-1-1'

tickers = ['AXP','AAPL','BA','CAT','CSCO','CVX','XOM','GS']
prices_list = []
for ticker in tickers:
    try:
        prices = dr.DataReader(ticker,'yahoo',start)['Adj Close']
        prices = pd.DataFrame(prices)
        prices.columns = [ticker]
        prices_list.append(prices)
    except:
        pass
    prices_df = pd.concat(prices_list,axis=1)
prices_df.sort_index(inplace=True)
prices_df.head()

索引-4表示距离最后一个元素的第四位,因此
list1[-4:1]
list1[0:1]
相同,后者与
[list1[0]]
相同,后者是
[`Apple`]

(再举一个例子,
list1[1:-1]
=
list1[1:3]
=
[list1[1],list1[2]]
=
[`Google`,`MS`]