如何在Python中执行以下操作?

array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)

我需要一个数组的元素,但是要从头到尾。


#1楼

要反转相同列表,请使用:

array.reverse()

要将反向列表分配给其他列表,请使用:

newArray = array[::-1]

#2楼

严格来说,问题不是如何反向返回列表,而是如何使用示例列表名称array反向列表。

要反转名为"array"的列表,请使用array.reverse()

通过使用array = array[::-1]将列表定义为自身的切片修改,还可以使用如上所述的非常有用的slice方法来将列表反转。


#3楼

这是复制列表:

L = [0,10,20,40]
p = L[::-1]  #  Here p will be having reversed list

这是就地反转列表:

L.reverse() # Here L will be reversed in-place (no new list made)

#4楼

使用清单理解:

[array[n] for n in range(len(array)-1, -1, -1)]

#5楼

def reverse(my_list):L = len(my_list)for i in range(L/2):my_list[i], my_list[L-i - 1] = my_list[L-i-1], my_list[i]return my_list

#6楼

如果要将反向列表的元素存储在其他变量中,则可以使用revArray = array[::-1]revArray = list(reversed(array))

但是第一个变体要快一些:

z = range(1000000)
startTimeTic = time.time()
y = z[::-1]
print("Time: %s s" % (time.time() - startTimeTic))f = range(1000000)
startTimeTic = time.time()
g = list(reversed(f))
print("Time: %s s" % (time.time() - startTimeTic))

输出:

Time: 0.00489711761475 s
Time: 0.00609302520752 s

#7楼

>>> L = [1, 2, 3, 4]
>>> L = [L[-i] for i in range(1, len(L) + 1)]
>>> L
[4, 3, 2, 1]

#8楼

def reverse(text):output = []for i in range(len(text)-1, -1, -1):output.append(text[i])return output

#9楼

使用reversed(array)可能是最佳途径。

>>> array = [1,2,3,4]
>>> for item in reversed(array):
>>>     print item

您是否应该了解如何在不使用内置reversed情况下实现此目标。

def reverse(a):midpoint = len(a)/2for item in a[:midpoint]:otherside = (len(a) - a.index(item)) - 1temp = a[otherside]a[otherside] = a[a.index(item)]a[a.index(item)] = tempreturn a

这需要O(N)时间。


#10楼

您总是可以像对待堆栈一样对待列表,只是将元素从列表的后端弹出堆栈顶部。 这样,您就可以利用堆栈的先进先出特性。 当然,您正在使用第一个数组。 我确实喜欢这种方法,因为它非常直观,您可以看到一个列表是从后端使用的,而另一个列表是从前端构建的。

>>> l = [1,2,3,4,5,6]; nl=[]
>>> while l:nl.append(l.pop())
>>> print nl
[6, 5, 4, 3, 2, 1]

#11楼

使用切片,例如array = array [::-1]是一个巧妙的技巧,非常具有Python风格,但是对于新手来说可能有些晦涩。 使用reverse()方法是日常编码的好方法,因为它易于阅读。

但是,如果像面试问题中那样需要在适当的位置反转列表,则可能无法使用此类内置方法。 面试官将着眼于您如何解决问题,而不是深入了解Python知识,这需要一种算法方法。 下面的示例使用经典交换,可能是实现此目的的一种方法:-

def reverse_in_place(lst):      # Declare a functionsize = len(lst)             # Get the length of the sequencehiindex = size - 1its = size/2                # Number of iterations requiredfor i in xrange(0, its):    # i is the low index pointertemp = lst[hiindex]     # Perform a classic swaplst[hiindex] = lst[i]lst[i] = temphiindex -= 1            # Decrement the high index pointerprint "Done!"# Now test it!!
array = [2, 5, 8, 9, 12, 19, 25, 27, 32, 60, 65, 1, 7, 24, 124, 654]print array                    # Print the original sequence
reverse_in_place(array)        # Call the function passing the list
print array                    # Print reversed list**The result:**
[2, 5, 8, 9, 12, 19, 25, 27, 32, 60, 65, 1, 7, 24, 124, 654]
Done!
[654, 124, 24, 7, 1, 65, 60, 32, 27, 25, 19, 12, 9, 8, 5, 2]

请注意,这不适用于元组或字符串序列,因为字符串和元组是不可变的,即,您无法写入它们来更改元素。


#12楼

def reverse(text):lst=[]for i in range(0,len(text)):lst.append(text[(len(text)-1)-i])return ''.join(lst)print reverse('reversed')

#13楼

list_data = [1,2,3,4,5]
l = len(list_data)
i=l+1
rev_data = []
while l>0:j=i-ll-=1rev_data.append(list_data[-j])
print "After Rev:- %s" %rev_data

#14楼

>>> l = [1, 2, 3, 4, 5]
>>> print(reduce(lambda acc, x: [x] + acc, l, []))
[5, 4, 3, 2, 1]

#15楼

>>> L = [0,10,20,40]
>>> L[::-1]
[40, 20, 10, 0]

扩展切片语法在2.3.5版的Python 新增功能中很好地解释了

根据注释中的特殊要求, 这是最新的slice文档 。


#16楼

for x in array[::-1]:do stuff

#17楼

您可以通过以下方式使用reversed功能:

>>> array=[0,10,20,40]
>>> for i in reversed(array):
...     print(i)

请注意, reversed(...)不会返回列表。 您可以使用list(reversed(array))获得反向列表。


#18楼

>>> L = [0,10,20,40]
>>> L.reverse()
>>> L
[40, 20, 10, 0]

要么

>>> L[::-1]
[40, 20, 10, 0]

#19楼

array=[0,10,20,40]
for e in reversed(array):print e

#20楼

您的需求到Python中最直接的翻译是for语句:

for i in xrange(len(array) - 1, -1, -1):print i, array[i]

这相当神秘,但可能有用。


#21楼

通过切换相反索引的引用就地反转:

>>> l = [1,2,3,4,5,6,7]
>>> for i in range(len(l)//2):
...     l[i], l[-1-i] = l[-1-i], l[i]
...
>>> l
[7, 6, 5, 4, 3, 2, 1]

#22楼

我发现(与其他建议相反) l.reverse()是迄今为止在Python 3和2中反转长列表的最快方法。我很想知道其他人是否可以复制这些时间。

l[::-1]可能较慢,因为它在反转列表之前先将其复制。 在由reversed(l)进行的迭代器周围添加list()调用必须增加一些开销。 当然,如果您想要列表的副本或迭代器,则可以使用相应的方法,但是,如果您只想反转列表,则l.reverse()似乎是最快的方法。

职能

def rev_list1(l):return l[::-1]def rev_list2(l):return list(reversed(l))def rev_list3(l):l.reverse()return l

清单

l = list(range(1000000))

Python 3.5计时

timeit(lambda: rev_list1(l), number=1000)
# 6.48
timeit(lambda: rev_list2(l), number=1000)
# 7.13
timeit(lambda: rev_list3(l), number=1000)
# 0.44

Python 2.7计时

timeit(lambda: rev_list1(l), number=1000)
# 6.76
timeit(lambda: rev_list2(l), number=1000)
# 9.18
timeit(lambda: rev_list3(l), number=1000)
# 0.46

#23楼

您还可以使用数组索引的按位补码来反向遍历数组:

>>> array = [0, 10, 20, 40]
>>> [array[~i] for i, _ in enumerate(array)]
[40, 20, 10, 0]

无论您做什么,都不要这样。


#24楼

可以使用__reverse__来完成,它返回一个生成器。

>>> l = [1,2,3,4,5]
>>> for i in l.__reversed__():
...   print i
...
5
4
3
2
1
>>>

#25楼

我认为在Python中反转列表的最好方法是:

a = [1,2,3,4]
a = a[::-1]
print(a)
>>> [4,3,2,1]

该工作已完成,现在您有一个反向列表。


#26楼

reversedlist

>>> list1 = [1,2,3]
>>> reversed_list = list(reversed(list1))
>>> reversed_list
>>> [3, 2, 1]

#27楼

组织值:

在Python中,列表的顺序也可以通过sort操作,以数字/字母顺序组织变量:

暂时:

print(sorted(my_list))

常驻:

my_list.sort(), print(my_list)

您可以使用标志“ reverse = True”进行排序:

print(sorted(my_list, reverse=True))

要么

my_list.sort(reverse=True), print(my_list)

没有组织

也许您不想对值进行排序,而只对值进行反转。 然后我们可以这样做:

print(list(reversed(my_list)))

** 数字按列表顺序优先于字母。 Python价值观的组织很棒。


#28楼

使用一些逻辑

使用一些古老的逻辑来练习面试。

从前到后交换数字。 使用两个指针index[0] and index[last]

def reverse(array):n = arrayfirst = 0last = len(array) - 1while first < last:holder = n[first]n[first] = n[last]n[last] = holderfirst += 1last -= 1return ninput -> [-1 ,1, 2, 3, 4, 5, 6]
output -> [6, 1, 2, 3, 4, 5, -1]

#29楼

使用最少的内置功能(假设它是采访设置)

array = [1, 2, 3, 4, 5, 6,7, 8]
inverse = [] #create container for inverse array
length = len(array)  #to iterate later, returns 8
counter = length - 1  #because the 8th element is on position 7 (as python starts from 0)for i in range(length): inverse.append(array[counter])counter -= 1
print(inverse)

#30楼

采用

print(reversed(list_name))

#31楼

此类使用Python魔术方法和迭代器进行反转,并反转列表:

class Reverse(object):""" Builds a reverse method using magic methods """def __init__(self, data):self.data = dataself.index = len(data)def __iter__(self):return selfdef __next__(self):if self.index == 0:raise StopIterationself.index = self.index - 1return self.data[self.index]REV_INSTANCE = Reverse([0, 10, 20, 40])iter(REV_INSTANCE)rev_list = []
for i in REV_INSTANCE:rev_list.append(i)print(rev_list)

输出量

[40, 20, 10, 0]

如何在Python中反转列表?相关推荐

  1. python中列表长度查询,从零开始学Python|如何在Python中查找列表的长度?

    Python中的列表是有序且可更改的集合数据类型.列表也可以有重复的条目.所述的PythonLEN()方法被用于找到任何对象的长度.在本文中,我们将按以下顺序学习如何在python中查找列表的长度: ...

  2. python清空列表clear_如何在Python中清空列表?

    似乎很"肮脏"以这种方式清空列表: while len(alist) > 0 : alist.pop() 是否存在明确的方法? #1楼 list = [] 将list重置为空 ...

  3. 判断表达式值是否为空_如何在 Python 中判断列表是否为空

    在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么? 在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素. 我们可以把判断表达式可以分为两个阵营: ...

  4. python列表中随机选择_如何在Python中从列表中随机选择一个项目?

    python列表中随机选择 Python random module provides an inbuilt method choice() has an ability to select a ra ...

  5. 如何在python中对列表套列表进行排序_如何实现对Python中列表的排序?

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  6. python创建float型的列表_如何在Python中进行列表的创建?

    学记在这两天将自己产生的知识漏洞给打了个补丁,之前写出的文章可能会有一些纰漏,在这里,学记对大家说一声抱歉了. 今天学记就把这两天找出的纰漏,全部都写出来,供大家参考,为大家下一步的学习做好铺垫. 1 ...

  7. python列表如何修改_如何在python中更改列表的字典中的值

    for x in range(0, 5): ohlc_list[x] = [open , high , low, close] 这并没有按照您的想法做.它为相同的4个列表创建5个引用,并将这些引用保留 ...

  8. 如何在python中创建列表副本,在Python中切片列表而不生成副本

    I have the following problem. Given a list of integers L, I need to generate all of the sublists L[k ...

  9. python列表元素赋值_如何在python中的列表列表的所有元素上执行“一行”赋值

    我不会改变你自己的方法,而是回答你的问题: lol = [[1,3],[3,4]] from operator import setitem map(lambda x: setitem(x, 1, - ...

最新文章

  1. IDEA Java解析GeoJson.json文件
  2. 无法安装ie8,因为其他程序或更新正在等待重启您的计算机,ie8 因为其他程序或更新正在等待重新启...
  3. Ext Js MVC系列二 利用Application和Viewport进行应用程序初始化和页面布局
  4. beyond compare 3.10在异常关机后无法启动
  5. 36 | 套路篇:怎么评估系统的网络性能?
  6. php用switch编写车费的输出,PHP Switch语句在实际代码中的应用
  7. 从Commons CLI迁移到picocli
  8. 客座编辑:李建平(1976-),男,博士,中国科学院科技战略研究院系统分析与管理所研究员、所长...
  9. 计算机硬件专业知识西瓜视频,2019年中电脑硬件榜单,空调西瓜+电脑助你当个快乐肥宅...
  10. Oracle XE http端口8080的修改
  11. SAS与R优缺点讨论:从工业界到学界
  12. c语言,10行代码写一个简单鼠标连点器
  13. 关于电子账户开户四五要素
  14. 窗口特征(Window Features)
  15. 网站服务器主要是pcu还是内存,PCU占用一直跑的很高的真正元凶
  16. wordpress企业网站主题仿制04-wordpress企业网站产品页面新闻页面仿制
  17. WordArt怎样生成中文词云?
  18. 强大的PubMed插件Scholarscope
  19. idea将junit设置模板_IDEA配置JUnit进行单元测试
  20. dp302打印服务器网页登录,轻松共享 D-Link DP-302 打印服务器

热门文章

  1. Android 编译报错:Could not get resource
  2. 面试Android实习生
  3. JsBridge Uncaught TypeError: Cannot call method 'callHandler' of undefined, source
  4. Failed to find provider info for com.tencent.mm.sdk.plugin.provider
  5. 第十、十一周项目-阅读程序,写出这些程序的运行结果(1)
  6. Android之解剖网络请求框架Volley
  7. oracle分页数据,oracle 分页 数据重复 数据不正确
  8. ORM-Dapper:Dapper百科
  9. iOS开发之Masonry框架源码解析
  10. 最小生成树、拓扑排序、单源最短路径