如何在Python中使用切片选择彼此

时间:2017-05-11 03:02:13

标签: python slice

我想知道如何从分配给python变量的数字中提取所有其他数字(从第二个开始)。

例如,我想要这个:

N+1 query

成为

a= '102030'

我听说可以使用"切片,"我只是不确定如何。

感谢任何帮助!

5 个答案:

答案 0 :(得分:3)

首先,您只能对某些序列对象进行切片,例如列表和字符串。你有一个整数。你仍然可以得到你想要的结果。

首先取你的号码并将其转换为字符串:

a = 102030
str_a str(a)

然后执行此操作后,您可以使用普通slice syntax,这样您就可以使用开始,结束,步长来执行此操作

a = int(str_a[1::2])
# a == 0
# but str_a[1::2] == "000"

现在一个将是你想要的int。

编辑:你似乎完全改变了你的问题,所以它变得更加微不足道了:

a = "102030"[1::2]

你能够切片'对于字符串,切片语法为seqence_type[start:end:step]如果它从第一个索引开始,你可以省略第一个参数(在这种情况下,你会得到" 123"而不是" 000",所以我们不能这样做)如果省略第二个它就到了最后,如果省略最后一个参数,则使用步长1。通过这种方式,您甚至可以使用切片通过

复制数组/字符串
hello = "hello"
hello2 = hello[:]+"2"
print(hello2)
# "hello2"

答案 1 :(得分:2)

修改

否则,如果你从给定的字符串开始,那么你应该像这样切片:

a = a[1::2]
  1. 第一个元素1表示您希望从第二个元素开始切割元素。
  2. 最后一个元素2是间隔(每两个元素)
  3. 空的中间元素实际上是索引上限(不包括)。如果你没有提出任何意味着你想要所有物品。
  4. <强>原始

    请参阅上一个问题:

    How to make list elements into string?

    a = [10, 20, 30]开始,

    为了从第二个元素每个列表项开始获取给定整数列表a的连接字符串,您可以将列表中的每个项目从第二个元素开始切片使用[1::](索引1表示从 second 元素开始),如下所示:

    a = [10, 20, 30]
    a = [''.join(str(x)[1::] for x in a)]
    
    print(a)
    

    结果:

    ['000']
    

答案 2 :(得分:1)

请执行以下操作:

l[1:][::2]

与...完全相同:

l[1::2]
>>> a= '102030'
>>> a[1:][::2]
'000'
>>> a[1::2]
'000'
>>>

答案 3 :(得分:0)

Python切片语法支持可选的第三个参数,即步骤参数:

def oddIndexes(string):
    return string[1::2]

>>> oddIndexes('102030')
'000'

答案 4 :(得分:0)

在python中,如果你有一个列表,字符串等(称之为a),你可以通过提供你希望a结束的索引范围来访问它的元素。

例如,如果a = "abcdef",则a[0:6]会返回"abcdef"。也就是说,a[0:6]将对应于&#39;的前六个元素。

如果你给它a[1:5],输出将是bcde,即1到4之间的元素(5不包括在内)。

您还可以通过指定第三个值(例如a[0:6:2])来要求它跳过一定数量的元素。这意味着,从第0个元素开始,向上跳到第6个跳过中间的一个元素。

要回答您的问题,您需要string[1:6:2]